Инкапсуляция - мне нравится это слово...

Подписаться на 3Dtoday
p8u
Идет загрузка
Загрузка
30.03.18
3357
20
печатает на Prusa i3 Kit
Применение
20
Аддитивные технологии хороши тем, что мы получаем изделие, к которому не нужно прикасаться для последующей обработки. Так хотелось бы. Но FDM — частный случай аддитивной технологи, накладывает ряд ограничений, вызванных тепловыми расширениями. Ведь пластик редко обеспечивает полный функционал изделия.

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

Для примера, рассмотрим один из кронштейнов (показан красной стрелкой на фото снизу) для аппарата программирования RFID-меток.
Кронштейн
Кронштейн содержит 6 подшипников и плату штыкового коннектора (желтая стрелка). Благодаря использованной технологии инкапсуляции, получился достаточно легкий и негабаритный кронштейн. Да, заменить подшипники затруднительно. Но они закончат свою службу значительно позже моральной старости устройства. Плата жёстко закреплена, нареканий нет. Проще говоря: напечатали и сразу используем.

Как это делалось, покажу на более простом примере датчика касания.
Принцип работы датчика прост.
41663383865c6ebd6e9c607008c1e253.gif
При касании платформы, разрывается контакт одного из шариков и фиксируется касание. Для тестирования, было решено изготовить прототип с напечатанным корпусом по FDM-технологии. Для этого надо было инкапсулировать контактную площадку, представляющей собой металлическую пластину требуемой формы.
Печать была приостановлена перед слоем, который «запечатывает» площадку. После чего и была вставлена площадка.
Как это сделано?
Для внесение изменения в g-код была сделана программка GCodeEditor. Её задача — помощь в редактировании файла с g-кодом, созданным слайсером.
GCodeEditor
Однако, программа «не кушает что попало». Файл с g-кодом должен содержать следующие фрагменты, которые настраиваются в слайсере. В нашем случае — Slack3r в экспертном режиме.
Настройка слайсера Slick3r для работы с GCodeEditor
И так, мы создали файл с g-кодом и сохранили. Открываем файл в GCodeEditor. Находим последний слой, после которого надо «заливать» контакты и записываем команды, которые необходимо выполнить в этой точке, в правую колонку (зеленая стрелка). В нашем случае, этот перечень «зашит» и вставляется нажатием кнопки «Тот шаблон» (типа юмор разработчика на наши чаяния) (красная стрелка).
В случае других принтеров, слайсеров, прошивок содержание команд могут быть другое. Если перечень команд нас устраивает, нажимаем клавишу «Insert text». Текст вставляется в код, о чем говорит метка «edit».
В дальнейшем, можно редактировать команды, для закрепления редактирования надо обязательно нажимать кнопку «Insert text». Команды будут вставлены после целевого слоя в момент сохранения файла. Свободы выбора имени нет, файл будет сохранён под старым именем с добавлением «_changed». В результате в файле появится следующая информация (выделено синим).
Чтобы легче найти вставку, был вставлен комментарий ;****** в начале и конце блока
В принципе и всё. Поскольку программа является частью проекта, там есть ряд элементов, которые пока трудно пояснить. Это касается «Рисовать данные» , «Нет захвата» и «настройка». Радиокнопка «не очищать» приводит к тому, что отрисовка идет «валом», Т.е. видны слои, просмотренные с момента включения кнопки. Отображение работает в самомасштабировании, с заполнением всего поля. Такой режим можно отключить, поставив метку «использ.текущий».

Программу можно загрузить на нашей странице ВКонтакте «как есть». Мы будем только рады, если кто-то инкапсулирует нашу разработку в слайсер, даже если нам не будет ни каких плюшек ;о)

Эта же программа применялась при написании этой статьи http://3dtoday.ru/we-print/support-from-the-fact-that-under-hands-got/
Подписаться на 3Dtoday
20
Комментарии к статье

Комментарии

30.03.18 в 11:18
1
Спасибо!
Теперь будет от чего плясать. Планирую так вставить микромагнитики.
30.03.18 в 14:50
2
Магниты лучше не греть.
30.03.18 в 15:03
1
от слова нет,уже на 60 градусах большинство теряет свои свойства.
30.03.18 в 15:10
1
Точка Кюри у неодимовых 310 грд С. Да, рабочая низкая. Но есть и на 80, а есть уже и на 220. Но это рабочая температура, когда сила сохраняется. А на время печати вполне должно хватить. Но если уж совсем стрёмно, то можно найти другие магниты:

N - Normal. Этот тип изделий применяют в условиях, где максимальная температура меньше 80 °С;
М - Medium стоит приобрести, если Вы планируете использовать оборудование до 100 °С;
H - класс High применим для достаточно высоких температур, но не выше отметки 120 °С;
SH - при температуре выше 150 °С неодимовый магнит теряет свойства и разрушается;
UH - Ultra High. Само название указывает на внушительную термоустойчивость изделия до 180 °С;
EH - Extra High. Магниты с такой маркировкой используют в местах, где температура может подниматься до 200°С.
AH - до 240 °С.
30.03.18 в 13:06
1
А это чем-нибудь отличается от обычного "поставил на паузу на нужной высоте - бросил деталь - продолжил печать"?
30.03.18 в 13:18
1
Удобно. Пропищит, отъедет голова - ставь, не хочу. Когда много и без того дел, очень помогает.
30.03.18 в 17:41
0
М600 тоже самое
30.03.18 в 17:54
0
Если поддерживает прошивка.
31.03.18 в 10:32
1
В Simplify3D через advanced settings - stop printing at high / start printing at high.
Для полной автоматизации можно поставить паузу в пост-скртпте первого процесса и нарезать модель сразу двумя процессами.
31.03.18 в 12:08
2
Для полной автоматизации можно поставить паузу в пост-скртпте первого процесса и нарезать модель сразу двумя процессами.
...с этим есть одна проблеммка...

Попробуйте так сделать и посмотрите полученный g-code.
Буду удивлен, если вы найдете команду M600 (или иную), которую вставите в пост-скрипте первого процесса, перед началом второго.
И попрошу рассказать потом мне, как это у вас получилось так сделать.
01.04.18 в 10:18
0
Да, собрать два процесса в один не удалось.

Но пока ковырял Simplify, нашел ответ - в пост-процессинг скрипт добавить команду замены:

{REPLACE "; layer 12," "G0 X0 Y120 F5000\nM0\n; layer 12,"}

Где layer - слой после которого необходимо "вживлять" деталь,
координаты X Y - отъезд печатающей головы на требуемое расстояние.
После этого принтер встает на паузу M0 и запрашивает подтверждение энкодером для продолжения.
Можно добавить свистелки-уведомлялки (сигнал, смена цвета подсветки), по желанию.
01.04.18 в 10:21
1
Вот, это другое дело... да, это более менее понятный и реальный вариант, здесь уже без вопросов ;-)

Вот только в точности, как у вас написано, я бы пробовать не стал...
Команда "G0" в данном случае, сомнительна в правильности использования.
Я не говорю, что недопустима, я говорю про себя... я бы использовал "G1"

Но есть еще интересный способ, тоже конечно связан с REPLACE, но универсальнее... чуть позже постараюсь описать, отвлекся пока на другое.
01.04.18 в 10:43
0
Уже протестировал на тестовой детали - вживил М3 гайку внутрь бобышки D10x5
Работает как надо.
Да, возможно c G1 точнее, но и с G0 работает.
01.04.18 в 11:36
1
В вашем варианте, суть проблемы заключается даже не в G0 или G1.
Я вижу проблему глубже... в том, что использование вашего варианта подразумевает строго следить за правильностью написания параметров в пост-обработке и необходимости жестко отслеживать ОТСУТСТВИЕ данной строки при обычной печати...

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

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

В Simplify3D версии 4.01 (далее "S3D"), есть интересная "фишка" под названием 'Variable Settings Wizard' находится в меню 'Tools', вот и будем использовать решения самого S3D...

Открываем модель и режем с помощью этой "фичи" нашу модель на высоты в миллиметрах, где необходимы паузы печати, например:
5671d2555cf937b4cc03a316ab47d7d8.PNG

Получаем процессы с определенной последовательностью в названиях... нарезаем модель со всеми процессами сразу:
98a3d0b3111d6470d83eee019ef0e333.PNG

Получаем следующее:
b4519a9a4019500d8046c24a7caab0fc.PNG

Эта технология, как бы понятна, так оно все и задумывалось разработчиками S3D, а теперь самое интересное...
В настройках процесса, в закладке скриптов, в поле пост-процесса прописываю строчку:
e1f6da23c946dd2d10b0edc6ea830d4f.PNG

После нарезки слайсером с такой пост-обработкой в g-code получаем следующее:
6e1c84e4be1bebc6250b620de3d87104.PNG


При использовании такого варианта мне не приходится следить, что и куда вставлять в g-code и пересчитывать миллиметры в слои, все подставляется куда надо само и таких "вставок" может быть сколь угодно много, согласно возможностям S3D и вашей потребностью. Кроме того, наличие такой строчки в пост-процессе никак не будет влиять на обычную печать, она может там "жить" всегда, а без использования "визарда нарезки по высотам", который определенной последовательностью именует процессы, данный пост-процесс g-code "не портит". Эту же технологию использую для замены прутка с другим цветом, по необходимости, при цветной печати одним соплом.

Как-то так... может сумбурно и непонятно... но если есть вопросы - готов ответить...

P.S. Блин... плохо видно саму строчку пост-процесса, пока картинку не увеличишь... вот она:
{REPLACE "; process Process1-" "XXXX ; any required code for pause\n; process Process1-"}

P.P.S. 'XXXX' - конечно же заменить на любой g-code или на любую последовательность команд, необходимые именно вам и вашему принтеру.
02.04.18 в 21:52
0
С Variable Settings Wizard отличный метод!


*/необходимости жестко отслеживать ОТСУТСТВИЕ данной строки при обычной печати.../*
Я поступаю проще - создаю процесс с названием типа "Let's put something inside".
А для обычной печати пользую другие процессы.

*/каждый раз придется пересчитывать из миллиметров в количество слоев/*
Пересчетом не занимаюсь. Ползунком быстро нахожу нужный слой и вписываю в скрипт.
02.04.18 в 22:16
0
Я поступаю проще - создаю процесс с названием типа "Let's put something inside".
А для обычной печати пользую другие процессы.
Интересно... а как в таком случае этот "отдельный" процесс коррелирует с остальными, которые настроены на конкретные параметры печати? У него же свои собственные настройки, которые остались от старой еще печати, с другими параметрами, жи... И его параметры для печати, все-равно приходится править, не говоря про паузу... А если печатаем обычной печатью, без паузы, то вам каждый раз приходится в диалоге выбирать тот процесс, которым хотите печатать, если этот процесс всегда живет в списке процессов? А если в детали паузы надо на разных высотах вставлять? Гаечки жи не всегда на одной высоте в детали... Вписывать еще кучу строк в пост-процесс? Мне "простота" вашей технологии не совсем понятна, в сравнении с моей, но вы говорите "проще"... Может я что-то упускаю, не вижу?

По второму разъяснению понятно, хотя в моделях высоты измеряются в миллиметрах, а не в слоях... мне даже предварительно слайсить не приходится, чтоб узнать что вписывать в пост-процесс... но это действительно мелочи, а вот в первым вашем объяснении у меня что-то сложности возникли, с пониманием "простоты" ;-)

P.S. А я ждал вопроса по своей технологии, там есть одно слабое место, но я намеренно его опустил в описании, если бы кого-то реально заинтересовала технология, тот столкнулся бы с этим непременно и должен был ткнуть меня носом... Стараюсь всегда оставлять такую возможность... ;-)
03.04.18 в 08:47
0
32898a395fa7ab24cb88e9bbd54e5a88.png


Возможно, путанно объяснил.
Для обычной печати - выбираю из списка (например "PLA20%" или "ABS").
Если нужно напечатать деталь со вставкой гайки, например - выбираю "Let's put something inside". Запускаю слайсинг, в окне превью ползунком нахожу нужный слой
88620b14e71c50fd7155f8e79b564e7c.png


Выхожу из превью и вставляю значение в настройках.
d75f97cd16277e191e1187b722ea5dc1.png


Нарезаю деталь и в печать.

BOOM! PROFIT!
03.04.18 в 09:03
0
Все, я понял свое заблуждение и причину своего непонимания...
0a0cb9f23bf4634c10a491efac39b5e1.PNG

Вы решили логику разработчиков S3D несколько "подрихтовать" в части разграничения функционала программы... и хранить настройки на материал и качество печати не там, где они предусматривают, а в процессах... Все понял. Вы оказывается всегда сталкиваетесь с выбором каким процессом слайсить... :-)

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

Увидел свое заблуждение :-)
03.04.18 в 09:11
0
*/я жил в рамках идеологии самой программы/*

"к людям надо помягше. А на вопросы смотреть ширше." ©
05.04.18 в 21:16
0
Залили на гигхаб https://github.com/artemopolus/GcodeEditor

Для написания комментариев, пожалуйста, авторизуйтесь.

Читайте в блогах

3Dtoday за 60 секунд от 16 июля

Аналитики IDC прогнозируют двукратный рост европейского рынка 3D-печати к 2022 году

3D Systems предлагает настольные фотополимерные 3D-принтеры FabPro 1000

Новая версия 3D принтера SkyOne

Lockheed Martin оснащает спутники 3D-печатными титановыми баками

3D-принтер итальянца в России: Raise3D N1 Dual — моделирование и прототипирование