Обратная разработка (reverse engineering) детали во Freecad

Введение

Недавно я приобрел себе 3D сканер Revopoint, но вот реальных задач, к сожалению, не подворачивалось. Но недавно друг попросили сделать ему крепление длоя go pro на шлем для мотоцикла. Собственно, самая сложная часть в этом процессе это смоделировать крепеж на основе существующей заглушки. Эта задача выродилась в интерсный проект по реверс инженерену объемной детали.

Сканирование модели

Для сканирования использовалось стандартное ПО от производителя RevoScan 5.

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

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

Для решения этих проблемы существуют 2 варианта:

  • матирующие покрытия
  • светоотражающие маркеры

Я выбрал вариант с матированием, в целом модель почилась не идеальная, но приемлемая для работы.

Результат сканирования выглядет вот так:

модель 1
модель 2

После этого можно выгрузить модель в файл и перейти во freecad для создания CAD модели.

Cоздание CAD модели на основе 3d скана

Моделирование основной плоскости

На этом шаге сложность была в том, что у детали не было нормальной плоскости XY, поэтому чтобы ее получить, пришлось пойти на некоторые ухищерения.

Нужно выбрать верстак Surface:

верстак Surface

И на нем найти функцию Curve on mesh:

Кривая по точкам

Данное дествие позволит создать кривую, которая будет повторять контур нижней границы. Нижняя граница выбрана не случайно, так как она дает основной изгиб детали относительно плоскости XY.

В итоге получилась следующаяя линия:

Итоговая кривая

Можно заметить что он не доходит до краев формы, поэтому ее надо удленить.

Для этого нужно перейти на верстак Curves (он устанавливается дополнительно):

верстак Curves

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

Увеличение кривой

В итоге получилась следующая кривая:

Итоговая кривая

Далее моделировать пойдем от этой кривой.

Далее скроем модель и создадим скетч, а на котором нарисуем еще одну кривую, от которой будет строиться остальной чертеж.

Перейдем на верста Part и созданим новый скетч с помощью кнопки:

Итоговая кривая

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

XZ кривая
Расширенная геометрия
кривые для поверхности

Создаем поверхность с помощью функции Sweep..

кривые для поверхности
лицевая фигура

Далее с помощью функции Extrude задаем нужный объем фронтальной части:

объект для выдавливания

Далее нужно получить объект из пересечения 2-х частей: поверхности и фронтальной части. Для этого применяется функция Intersection

пересечение объектов

После этого нужно задать толщину детали. Делается это функцией Offset:

пересечение объектов

После этого можно посмотерть насколько поверхность соответсвтует изначальной детали:

пересечение объектов

После этого можно переходить к отрисовке креплений.

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

Создаем новый скетч как через Create sketch и выбираем нужню плостость (с тыльной стороны) для отрисовки:

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

После этого можно обвести нужную форму крепежа у загруженной модели:

основная геометрия крепления

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

перемещение плоскости

После этого делаем Extrude для этой геометри:

шаблон крепления

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

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

вырез

После чего делается Extrude в противоположну сторону (со знаком -), чтобы получилось пересечение:

вырез

Теперь с помощью с помощью операции Cut получаем итоговую геометрию:

вырез общий

Проверяем на сколько это попадает в модель:

сверка крипежа

И проверяем как оно будет крепиться к основной плоскости:

вырез общий

После этого повторяем операцию для всех верхних крипежей и центрального нижнего. После этого объединяем все в одну деталь с помощью Union:

наложение крепежа

Отрисовка нижней части

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

чертеж низа

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

модель низа без выреза

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

без кабель канала b yfkj;tybz

Опять же нужно посмотреть как это смотрится на исходной модели:

без кабель канала

Крепеж кабель канал

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

Далее опять через комбинации Extrude, Cut, Union получил итоговую деталь (с учетом выреза под провод):

без кабель канала

Если мы наложим деталь на чертеж и посмотрим с боку, то будет виден недостаток, который не был учтен:

без кабель канала

Для того чтобы это исправить нужно повернуть нашу деталь с помощью Transform (в меню выбирать деталь и нажать правую кноку):

без кабель канала

В итоге получаем правильный угол:

готовый канал

Склейка детали

Когда у нас есть все детали, мы можем их объединить в оду с помощью Boolean XOR:

полная деталь

В итоге получается итоговая деталь:

полная деталь с наложением

Заключение

По описанному в статье может показаться что процесс реверс инжиниринга детали довольно тривиальная задача, снял скан, обвел контуры и получил модель, но это не так. В итоге после распечатки и примерки данной детали у меня так и не получилось довести ее до ума даже через 10-15 итераций.

Основные выводы провала:

  1. Для качественной модели при сканировании критически важно четкое позициорирование одной грани по плоскости XY (увы я это понял поздно);
  2. Сходство исходного скана и CAD чертежа не дают никаких гарантий корректности;
  3. Матрирующие спреи могут давать доп погрешности при сканировани в виде капель и разводов, что критически влияет на качество для небольших моделей;
  4. Даже качественный скан детали со сложной геометрией имеет погрешности, влияющие на конечный результат. Поэтому если есть возможность работать с чертежом (или сделать его) я бы не заморачивался бы со сканированием;

Материалы для скачивания: