habrahabr

CAD для разработки снежинок: SnowFlaker

  • воскресенье, 28 декабря 2014 г. в 02:11:04
http://habrahabr.ru/post/246895/


Привет всем.
Да да, это CAD, для разработки снежинок, написанный мной за пару дней.

Предисловие.


Вырезая на днях очередную снежинку я задумался. Очень уж неудобно вырезать снежинку в слепую, разворачивать её, и убеждаться, что сделал не то что хотел.
Сначала я стал прибегать к карандашу. Сворачиваем снежинку, рисуем, вырезаем. Но мое воображение продолжало играть со мной злые шутки, я разворачивал и видел очередного уродца.
Почему бы не разработать CAD, чтобы поставить точку в этой ужасной несправедливости?

В статье не будет никакого процесса разработки и программирования. В ней я поделюсь с вами получившейся программой, и расскажу как ей пользоваться. Под катом много картинок.
Забрать сборку под win можно тут: sourceforge.net/projects/snowflaker/
Там же исходный код в GIT. Сборки под linux пока нет, но программа написана на fpc, и должна собираться и работать под linux-ом.


О программе


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

Основы работы


Теперь к самой программе. Так как во многих случаях проще показать — дальше будет много картинок.
Итак интерфейс у неё следующий:

В рабочей области 2 линии — это границы листа после сворачивания. Тут мы можем таскать область правой кнопкой мыши, и зумить колесом:

Чтобы создать первый контур — выбираем инструмент линия, и левой кнопкой мыши рисуем ломаную. Как только решили что нам хватит — правой кнопкой выключаем инструмент.

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

Надо что-то куда-то передвинуть? Выделяем группу вершин, тащим их, или вообще удаляем клавишей Del:

hint: удалять любые примитивы (линии, вершины, заливку) можно щелчком правой кнопкой мыши по примитиву
Удалили лишнего? Не беда. Делаем двойной щелчок на линии, и получаем дополнительную вершину:

Работали в Paint-e? Там есть инструмент заливка. Можно обвести определенную область, потом капнуть в центр и залить. Берем заливку, капаем в снежинку, и видим в области просмотра наше чудо:

Важно! Заливаемый контур должен быть замкнут. Вот что будет, если разомкнуть контур:

Работает 1 в 1 как заливка в паинте.
Заливка не влияет на изображение при печати. Это только для предпросмотра.
Сохранение, открытие файла я разжевывать не буду. С печатью все просто, жмем кнопку печати, выбираем принтер, печатаем.
Хочу лишь обратить внимание на пункт сохранения снежинки для печати в PNG формате. Он вот тут:


Работаем с результатом печати


После печати у вас будет примерно вот такая картинка:

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

Теперь надо согнуть до линии сведения. Можно не доводить миллиметр из-за толщины бумаги:

Дальше гнем по стрелке с двумя наконечниками:

Теперь с тремя:

Полученный результат вырезаем:



Правила проектирования


Чтобы не возникло казусов: «Я вырезал снежинку, а она у меня рассыпалась» я хочу ознакомить всех с простыми правилами грамотного проектирования.
Снежинка состоит из линий разреза. Для снежинки есть верхняя линия разреза, которая обязательно должна пересекать обе стороны:

Дальше могут быть внутренние вырезы. Их обязательное условие — пересекать только одну сторону:

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

Если вы хотите вырезать не снежинку, а шаблон (например для нанесения на стекло), то у вас в распоряжении есть только одна верхняя линия. Никаких внутренних вырезов.

В заключение


Я думаю я опоздал с софтом, и снежинки у большинства уже нарезаны. Однако если это не так — я буду рад, если программа поможет вам сделать что-то замечательное. Так же буду рад, если найдете баги ;)
Всем новогоднего настроения, хороших праздников и удачи в будущем году.
Спасибо за внимание!

Upd.
Пример снежинок, спроектированных в SnowFlaker и вырезанных мной на какой то офисной бумаге стандартной плотности:
вырезал небрежно, тапком не кидать