Вступление
Мастеровыми были мой прапрадед Ефим Степанович (пахарь, бондарь и столяр), мой прадед Трифон Ефимович (пахарь и плотник) и мой дед Михаил Трифонович (кузнец, плотник, столяр, бондарь). И я мастеровой человек. Инженер и столярплотниклюбитель.
Любому мастеровому человеку сложно... Сложно без интересных задач, сложно, когда не хватает возможностей для их реализации. В характере настоящего мастерового человека ставить перед собой порой кажущиеся мало выполнимыми задачи и их реализовывать.
Когда шесть лет назад, летом 2012 года, я вернулся к своему детищу — библиотеке проектирования тел вращения КОМПАСShaft (сейчас — приложение «Валы и механические передачи 3D» для КОМПАС3D), то на печати своего ИП я изобразил пару коничек с круговым зубом. В тот момент я только мечтал о том, что когданибудь смогу сделать их в 3D — это был скорее некий символ. С возрастом к знакам и символам судьбы относишься более внимательно... Цель была материализована!
От червячного колеса к гипоидной передаче в КОМПАС3D
С чего все началось? С желания! Очень хотелось дать конструктору не некие «подобия», а настоящие 3Dмодели механических передач, чтобы можно было:
а) изготовить по 3Dмодели зубчатое или червячное колесо, или звездочку, или коничку с круговым зубом, или (о, мечты...) гипоидную пару;
б) увидеть в 3Dсборке не условные «кракозюбры», а реальные модели;
в) и так далее...
А почему, собственно, надо ориентироваться в механических передачах на возможности (ограничения) привычной технологии? Неправильно ущемлять конструкцию технологией. Надо делать правильные передачи с оптимальной 3Dгеометрией активных рабочих поверхностей с точки зрения эксплуатации, а технология должна обеспечивать их изготовление. И такая технология, названная аддитивной, уже есть! Современные промышленные 3Dпринтеры позволяют печатать металлом вполне нагруженные изделия, и эксперименты заходят довольно далеко: уже скоро созданные аддитивным способом детали станут обычным явлением в машиностроительном изделии, если не в массовом, то в мелкосерийном — точно.
Владимир Панченко,
руководитель дивизиона
«Приложения КОМПАС-3D», АСКОНК использованию ядра в приложении «Валы и механические передачи» подтолкнул отзыв «Казцинкмаша». Для меня было очевидно, что строить можно быстрее — оставалось только убедить в этом Валерия Голованёва. Отягчающим обстоятельством было то, что Валерий не любил C++, а использовать функции C3D в контексте КОМПАС3D можно только на этом языке программирования. Пришлось делать макет — спасибо Алексею Султанову.
Простой перевод кода в лоб сразу дал ощутимый выигрыш по скорости: точная модель зуба червячного колеса построилась за 10 секунд. Червячное колесо строилось на API около часа.
Ну а дальше мастерство Валерия позволило создавать и конички с круговым зубом.
Вот так мы подняли проект «Валы и механические передачи» на совершенно новый уровень.
Что быстрее — API КОМПАС3D или C3D? Вопрос звучит парадоксально. C3D — это же геометрическое ядро КОМПАС3D! Как работает ядро, так работает и КОМПАС3D. Но при ближайшем рассмотрении, особенно в контексте прикладного разработчика, все встает на свои места.
Стандартная схема для разработчика выглядит так. Вызов функции API КОМПАС3D приводит к добавлению объекта в модель документа, а дальше для создания геометрии идет обращение к C3D. Потом по цепочке, в обратном порядке, данные возвращаются назад в API, и вот в руках разработчика интерфейс созданного объекта.
При этом на каждом шаге с данными чтото происходит: в API их пакуют в COM, в модели документа проверяют на правильность в текущем контексте, добавляют атрибуты и данные по отрисовке. Конечно, все эти действия оптимизированы и занимают очень мало времени. Если разработчику нужно получить цилиндрическую ступень вала, то он создает эскиз и операцию выдавливания в КОМПАС3D — всего два объекта и два обращения по цепочке. Но ситуация в корне меняется в случае с геометрией для конической передачи с круговым зубом. Для этого нужно создать множество вспомогательных кривых, поверхностей (и все это не аналитические цилиндры и конусы, а NURBS’ы), их пересечений. Прокачивание данных начинает занимать уже существенное время. Ядро при этом будет в основном простаивать. Чтобы избежать временных потерь, взаимодействие с API и моделью документа сводится к минимуму — добавь операцию с телом и прими тело, которое смоделировано в C3D. Получаем один заход в C3D и оптимально на стеке создаем всю вспомогательную геометрию, пересекаем, что нужно, и получаем результат. Работает только ядро, причем работает очень быстро!
Прошло примерно три года, и весной 2015го я решился сделать средствами API КОМПАС настоящее червячное колесо. Принцип реализации в этой задаче мне был понятен давно: необходимо заметание инструментом тела заготовки, то есть имитация механообработки в КОМПАС3D. Не скажу, что это было легко. Делать вырез набором из многочисленных положений инструмента неверно и долго. Необходимо сформировать совокупность поверхностей положений инструмента и создать по ним огибающую поверхность выреза. Что в общемто и получилось, но работало очень медленно. Кроме того, необходимо было добавить реализма в процесс, то есть учесть допуски при формировании 3Dгеометрии. В общем, решив одну задачу, захотелось большего — большей точности, измерений зуба червячного колеса и формирования выносок в чертежах с профилем этого зуба (а вдруг технологиинструментальщики захотят сделать измерительные шаблоны?). Кстати, в том же году на заводе «Казцинкмаш» по моим моделям изготовили две пары червячных колес, которые были успешно поставлены в рабочие узлы и получили положительный отзыв (рис. 1 и 2).
Рис. 1
Рис. 2
Идем дальше! Осенью 2015 года с подачи (или с пинка) Владимира Панченко, руководителя подразделения «Приложения КОМПАС3D», и под опекой Алексея Султанова я начал изучать программирование на ядре C3D, на математике которого построен КОМПАС3D. Цель — получить свободу! И я ее получил. Меня больше не ограничивало количество выполняемых операций и процедур. Все происходило достаточно быстро. На выходе я имел тело — массив вырезов из заготовки червячного колеса. Ну а дальше все просто: булева операция — и червячное колесо готово.
Затем последовали цилиндрички внешнего зацепления. Казалось бы, просто, а между тем в случае с косозубым колесом и операцией выреза по винту в КОМПАС3D на API всё тоже строилось достаточно долго. Сейчас эти шестерни могут быть сформированы и с настоящей затыловкой.
Ну и в конце 2015 года стартовал процесс работы над коничками с круговым зубом.
Алгоритм к тому времени был проработан на API КОМПАС. Первые модели с не очень хорошей геометрией формировались до суток чистого времени. Здесь одним заметанием поверхностей не обошлось. Создавались обкатные конические передачи, и необходимо было сформировать колесо, обработав его прототипом зуборезной головки. Потом по полученной 3Dгеометрии требовалось сформировать и сохранить прототип инструмента для шестерни, со всего этого снять контролируемые размеры и передать в чертеж. Далее уже на шестерне, учитывая, что она получалась идеально обкатная, нужно было локализовать контакт, то есть обеспечить правильное положение и размер пятна контакта в передаче.
Сложная и очень интересная задача. Изредка и Николай Голованов со своей командой правил по моим замечаниям функционал C3D. Таким образом, мои конички оказались еще и хорошим тестом для ядра.
Конички по моим моделям изготавливались неоднократно на разных предприятиях и работают в реальных узлах. Отработан алгоритм локализации (рис. 3 и 4).
Рис. 3
Рис. 4
Но трудно было остановиться и на этом. Не устраивала меня такая локализация. Слишком сложно было ее обеспечивать. И уже весной 2018 года пришла мысль о более «простом» способе локализации. Собственно, идея не моя, я подсмотрел ее в материалах фирмы Klingelnberg — у них это называется profile and lengthwise crowning (рис. 5).
Рис. 5
Рис. 6
Я это назвал «сделать зуб с холмиком», что и получилось. В каждом сечении профиля выреза был сделан его пересчет, и холмик удался. Коэффициенты локализации стали более простыми и понятными (рис. 6).
Николай Голованов,
руководитель разработки C3D LabsНекоторые приложения системы КОМПАС3D, в том числе и приложение «Валы и механические передачи 3D», работают напрямую с геометрическим ядром C3D. Это позволяет разработчикам приложений более гибко подойти к решению своих задач за счет расширения функционала (работы с низкоуровневыми функциями) и приемов построения геометрических объектов.
Если вы пишете приложение для КОМПАС3D и хотите использовать возможности C3D напрямую, имеет смысл обращаться к ядру, встроенному в сам КОМПАС3D. У этого способа есть единственное ограничение: надо использовать только C++, так как именно на этом языке написан сам КОМПАС. Если же вы решили работать с отдельной копией ядра внутри собственного приложения, то вам будут доступны и C#, и, в некоторых случаях, JavaScript.
Кратко о результате: пятно контакта, а это совокупность мгновенных площадок контакта на зубе шестерни за один цикл ее поворота (360/число зубьев шестерни), теперь всегда находится по середине активной поверхности зуба (на вершине «холмика»), его размер составляет более 60% всей поверхности.
Это дает следующие преимущества:
- передачи будут более долговечными и надежными;
- снизится шум в передаче;
- передача будет менее чувствительна к погрешностям монтажа.
Изготовить их, правда, пока получится только на ЧПУ, но в будущем подтянутся и аддитивные технологии.
Ну и под занавес... В этом году реализована передачамечта, моя самая сложная на сегодня мечтазадача — гипоидные передачи. Сделать для этого пришлось очень много... Шесть лет пути после возвращения к разработке САПР. Хотя на самом деле путь начался еще в 1991 году с заказного проекта по созданию ПО для расчета конических передач с круговым зубом (рис. 7).
Рис. 7
Рис. 8
Естественно, что зуб «холмиком» реализован и в них (рис. 8).
Как работает 3Dядро в моделировании механических передач
Из функционала ядра используются самые обычные операции: создать плоскость, построить эскиз/поверхность/пересечение поверхностей и т.д.
Рис. 9
Рис. 10
Рис. 11
Рис. 12
Для примера рассмотрим последовательность операций, необходимых для формирования 3Dмодели выреза конического колеса с круговыми зубьями (именно колеса, а не шестерни):
- Формируем поверхности конусов — делительного конуса, конуса вершин и конуса впадин. Для этого на соответствующих расчетных расстояниях создаются плоскости и на них строятся эскизы окружностей расчетных диаметров, а уже по ним — конусы.
- Строим точки центров делительного конуса и конуса впадин.
- Далее формируются касательная плоскость к конусу впадин (1) и плоскость по средней точке колеса во впадине (2). По пересечению плоскости (1) и плоскости XOY формируется ось пересечения (3), а по пересечению плоскости (2) и плоскости (1) формируется ось пересечения (4).
- На пересечении этих осей будет точка, через которую проходит вершина зуборезной головки (рис. 9).
- От этой точки, зная средний угол наклона зубьев (как раз в этой точке), мы рассчитываем центр зуборезной головки.
- Проекции полудуги зуборезной головки на конусы впадин (5) и делительный конус будут нашими направляющими. На этой направляющей (5) и будет построена базовая поверхность выреза (лофт по трем сечениям с расчетным профилем зуборезной головки) — рис. 10.
- Далее, имея процедуру для выполнения подобной операции под разными углами качания зуборезной головки при обработке колеса, мы получаем массив поверхностей вырезов (6) — рис. 11.
- После этого в достаточном количестве сечений (не менее 20) в нормальных плоскостях к направляющей (проекция полудуги зуборезной головки на делительный конус) будут получены совокупности линий пересечений массива поверхностей (рис. 12).
- Математическая обработка полученной совокупности линий пересечения позволит получить их огибающую, которая и будет одним из сечений реального выреза зуба колеса (рис. 13).
- По совокупности этих сечений вырезов и будет построен окончательный лофт — вырез зуба колеса (рис. 1416).
- С полученной геометрии будут автоматически сняты (построен зуб, секущей плоскостью сделано сечение и по нему посчитано) контрольные размеры, сам профиль зуба, и все это передано в чертеж (рис. 17 и 18).
- Всё достаточно просто, правда, в этом конкретном случае и без рассмотрения «небольших» скрытых от глаз читателей нюансов математических расчетов.
Рис. 13
Рис. 14
Рис. 15
Рис. 16
Рис. 17
Рис. 18
Что необходимо еще мастеровому в данном случае? Пространственное воображение, фантазия и умение мечтать, в конце концов!