Как создать 3D-модель для KiCAD [al_fuhrmann al_fuhrmann] (fb2) читать постранично


 [Настройки текста]  [Cбросить фильтры]

al_fuhrmann Как создать 3D-модель для KiCAD

Как создать 3D-модель для KiCAD не используя платных программ. Для многих это проблема. Один чувак поставил исцеленный SolidWorks и после этого, каждый раз, когда он пытается выходить в сеть, его модем видится как «неизвестное устройство». («Тебя посодют, а ты не воруй!») Геморрой? Для большинства геморрой. Купить солид стоит немеряных бабок. Геморрой? Опять. А всего-то надо нарисовать несколько 3D корпусов радиоэлементов, — в готовых библиотеках вечно что-нибудь не так. Это охота на воробья, так зачем здесь атомная бомба?

Как пример решения, возьмем простую задачу. Сделаем транзистор в корпусе TO-92:



Это задача простая и непростая — в ней есть кривые. Ноги иногда изгибают и это надо изобразить. Обычно транзисторы в таком корпусе устанавливают как «треножник», и средняя нога изгибается под посадочное место.

Используем тулчейн: librecad, openscad, scadstl, wings. Пойдем по порядку. Кроме третьего пункта все есть в репозиториях линуксовых дистрибутивов (а лучше в ppa у разработчиков, ибо в репах обычно старье), но это не очень большая проблема, я скажу, где взять и как собрать.

LibreCAD

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



Мы рисуем контуры в слое, отличном от нулевого. Тот по умолчанию, и его нельзя удалить. Я использую его только как вспомогательный, для разного рода направляющих. Также необходим слой для нанесения размеров. Размеры нужны для контроля сделанного построения. Размеры в данном случае указаны в миллиметрах, хотя обычно я использую единицу mil — тысячную долю дюйма, ибо США, ндравится это кому или нет, как и прежде, рулят в области электроники.

Сделав обе проекции, сохраняем их как блоки и экспортируем в отдельные файлы dxf: я назвал их can — бочонок корпуса, и pin — вывод.

Откроем оба файла и создадим из их содержимого блоки снова, так как в исходном состоянии после экспорта они разорваны. Это приведет к ошибкам при импорте в openscad и поэтому их надо снова преобразовать в блоки, а затем эти файлы можно сохранить и закрыть.

OpenSCAD

Это компилятор трехмерной графики, в нем не рисуют мышкой, а программируют. Это совсем не сложно, если правильно подойти к делу. В самом деле, транзистор в корпусе TO-92 как трехмерный графический объект состоит из четырех тел: корпуса и трех ножек квадратного сечения. Каждое из них можно получить выдавливанием плоского контура. Затем нужно сориентировать каждое тело: это композиция поворотов и параллельных переносов, — и описать это на функциональном языке программирования openscad. И все, пиздец. Разложив задачу на простые операции, переходим к делу.

В OpenSCAD пишем следующее:


// to-92.scad - модель корпуса TO-92

module pins() { // выводы

    color([0.8,0.8,0.8]) { // серебристый

        rotate([0,90,0])

            translate([0,0,-0.25])

                linear_extrude(0.5)

                    import("pin.dxf", $fn=60);

                translate([-0.25-1.27,-0.25,-8])

                    cube([0.5,0.5,8]);

                translate([-0.25+1.27,-0.25,-8])

                    cube([0.5,0.5,8]);

    }

}

module can()  { // корпус

    color([0.4,0.4,0.4]) { // темно-серый

        linear_extrude(5)

            import("can.dxf", $fn=60);

    }

}

pins(); // показать выводы

can();  // показать корпус


Модули импортируют данные из файлов, выдавливают контуры на заданную толщину, поворачивают кривую ногу и смещают прямые выводы, которые мы выдавливаем из самого openscad. Переменная $fn определяет степень скругления дуг. Ее следует брать компромиссной, слишком много — будут тяжеловатые файлы, слишком мало — дуга будет выглядеть ломаной линией.

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



Он получается клавишей F5.

Теперь нужно экспортировать результат в файлы .stl, но сделать это по раздельности, поскольку так будет легче работать с цветами в дальнейшем.

Комментируем строку с вызовом модуля pins и делаем рендер клавишей F6. Остается только корпус. При этом, информация о цвете у нас исчезает. Выбираем в меню экспорта тип файла и имя: can.stl и нажимаем ОК. Повторяем ту же процедуру для модуля pins. Раскомментируем обращение к pins, а can, наоборот, закомментируем. Снова делаем рендер и экспортируем выводы в файл pins.stl

Теперь можно закрыть openscad и продолжить работу с другой программой.

scadstl

OpenSCAD создает stl-файлы в текстовом виде. Программа Wings3D, к сожалению, поддерживает только двоичный формат этих файлов (есть и такой). К счастью, спецификацию для формата stl я нашел. Поскольку других способов не было, то я написал консольную утилиту scadstl, которая конвертирует текстовый файл stl в его двоичный эквивалент.

Программа написана на языке C. Ее исходники лежат в