![](https://habrastorage.org/files/7f6/1ab/d20/7f61abd2037748babba9d4f18d911060.gif)
Привет всем.
Да да, это CAD, для разработки снежинок, написанный мной за пару дней.
Предисловие
Вырезая на днях очередную снежинку я задумался. Очень уж неудобно вырезать снежинку вслепую, разворачивать её, и убеждаться, что сделал не то что хотел.
Сначала я стал прибегать к карандашу. Сворачиваем снежинку, рисуем, вырезаем. Но мое воображение продолжало играть со мной злые шутки, я разворачивал и видел очередного уродца.
Почему бы не разработать CAD, чтобы поставить точку в этой ужасной несправедливости?
В статье не будет никакого процесса разработки и программирования. В ней я поделюсь с вами получившейся программой, и расскажу как ей пользоваться. Под катом много картинок.
Забрать сборку под win можно тут: sourceforge.net/projects/snowflaker
Там же исходный код в GIT.
О программе
В программе мы проектируем контур, по которому будем вырезать, и отправляем на печать. Получаем распечатанный лист, складываем, вырезаем по контуру.
Поскольку не у всех есть принтер — изображение для печати можно предварительно растеризовать в png. Чтобы потом распечатать снежинок, прийти домой, сложить и вырезать.
Основы работы
Теперь к самой программе. Так как во многих случаях проще показать — дальше будет много картинок.
Итак интерфейс у неё следующий:
![](https://habrastorage.org/files/2d8/4d6/3dd/2d84d63dd4b14a3ab3c46ae42eb4f764.png)
В рабочей области 2 линии — это границы листа после сворачивания. Тут мы можем таскать область правой кнопкой мыши, и зумить колесом:
![](https://habrastorage.org/files/508/f79/204/508f79204ec645f684afc89b4f25989a.gif)
Чтобы создать первый контур — выбираем инструмент линия, и левой кнопкой мыши рисуем ломаную. Как только решили что нам хватит — правой кнопкой выключаем инструмент.
![](https://habrastorage.org/files/b06/6bf/f12/b066bff12fc6405ca8f34ec53f033418.gif)
hint: взять инструмент линия так же можно двойным щелчком на пустой области или на любой вершине.
Но пока у нас прямые линии. Давайте изогнем их (хватаем за линию или за специальные контрольные точки, и тащим):
![](https://habrastorage.org/files/8f3/f45/c66/8f3f45c66b5541369a1755352ac33ccf.gif)
Надо что-то куда-то передвинуть? Выделяем группу вершин, тащим их, или вообще удаляем клавишей Del:
![](https://habrastorage.org/files/fed/af5/44c/fedaf544cf5c45e6b885fe1f073c0003.gif)
hint: удалять любые примитивы (линии, вершины, заливку) можно щелчком правой кнопкой мыши по примитиву
Удалили лишнего? Не беда. Делаем двойной щелчок на линии, и получаем дополнительную вершину:
![](https://habrastorage.org/files/c55/5ee/3a0/c555ee3a0cc4499b928cbc3547f11096.gif)
Работали в Paint-e? Там есть инструмент заливка. Можно обвести определенную область, потом капнуть в центр и залить. Берем заливку, капаем в снежинку, и видим в области просмотра наше чудо:
![](https://habrastorage.org/files/1f7/ef0/014/1f7ef00143684314803c802be313af51.gif)
Важно! Заливаемый контур должен быть замкнут. Вот что будет, если разомкнуть контур:
![](https://habrastorage.org/files/e2f/cbb/24b/e2fcbb24ba434f3e9ab46d5a4389d63f.gif)
Работает 1 в 1 как заливка в паинте.
Заливка не влияет на изображение при печати. Это только для предпросмотра.
Сохранение, открытие файла я разжевывать не буду. С печатью все просто, жмем кнопку печати, выбираем принтер, печатаем.
Хочу лишь обратить внимание на пункт сохранения снежинки для печати в PNG формате. Он вот тут:
![](https://habrastorage.org/files/8ba/3a0/db4/8ba3a0db40844de7920a5ce4737132ce.png)
Работаем с результатом печати
После печати у вас будет примерно вот такая картинка:
![](https://habrastorage.org/files/f08/bf8/ba0/f08bf8ba0ec9419490121a0c2348005e.png)
Поскольку тут много больших фото, то
как все это сложить смотрим под спойлером
Переворачиваем лист так, чтобы стрелка с наконечником была в левом верхнем углу, и гнем лист справа на лево и сверху вниз:
![](https://habrastorage.org/r/w780q1/files/8ca/faf/915/8cafaf915e244c81943aefc330c9c5ee.jpg)
Теперь надо согнуть до линии сведения. Можно не доводить миллиметр из-за толщины бумаги:
![](https://habrastorage.org/r/w780q1/files/d41/f1b/d5e/d41f1bd5ec8b4fc3a8b1302bb5569eda.jpg)
Дальше гнем по стрелке с двумя наконечниками:
![](https://habrastorage.org/r/w780q1/files/c6c/a5d/7ec/c6ca5d7ec810467dbd4378ad3dde72b6.jpg)
Теперь с тремя:
![](https://habrastorage.org/r/w780q1/files/e10/777/48c/e1077748c7494f7d80f1b357f05e7fa2.jpg)
Полученный результат вырезаем:
![](https://habrastorage.org/r/w780q1/files/72f/ad7/450/72fad7450997410499f6246668b1a382.jpg)
![](https://habrastorage.org/files/8ca/faf/915/8cafaf915e244c81943aefc330c9c5ee.jpg)
Теперь надо согнуть до линии сведения. Можно не доводить миллиметр из-за толщины бумаги:
![](https://habrastorage.org/files/d41/f1b/d5e/d41f1bd5ec8b4fc3a8b1302bb5569eda.jpg)
Дальше гнем по стрелке с двумя наконечниками:
![](https://habrastorage.org/files/c6c/a5d/7ec/c6ca5d7ec810467dbd4378ad3dde72b6.jpg)
Теперь с тремя:
![](https://habrastorage.org/files/e10/777/48c/e1077748c7494f7d80f1b357f05e7fa2.jpg)
Полученный результат вырезаем:
![](https://habrastorage.org/files/72f/ad7/450/72fad7450997410499f6246668b1a382.jpg)
Правила проектирования
Чтобы не возникло казусов: «Я вырезал снежинку, а она у меня рассыпалась» я хочу ознакомить всех с простыми правилами грамотного проектирования.
Снежинка состоит из линий разреза. Для снежинки есть верхняя линия разреза, которая обязательно должна пересекать обе стороны:
![](https://habrastorage.org/files/875/69f/660/87569f660645453f8662b483e97c1a53.png)
Дальше могут быть внутренние вырезы. Их обязательное условие — пересекать только одну сторону:
![](https://habrastorage.org/files/bb3/002/bf2/bb3002bf2e374512bc9d90cb5b05368b.png)
Ну и наконец у самой последней, нижней линии, вырезающей центр — могут быть пересечения с обоих сторон:
![](https://habrastorage.org/files/c42/361/e6f/c42361e6fe434e78b563f0a0e5c9a4d8.png)
Если вы хотите вырезать не снежинку, а шаблон (например для нанесения на стекло), то у вас в распоряжении есть только одна верхняя линия. Никаких внутренних вырезов.
В заключение
Я думаю я опоздал с софтом, и снежинки у большинства уже нарезаны. Однако если это не так — я буду рад, если программа поможет вам сделать что-то замечательное. Так же буду рад, если найдете баги ;)
Всем новогоднего настроения, хороших праздников и удачи в будущем году.
Спасибо за внимание!
Upd.
Пример снежинок, спроектированных в SnowFlaker и вырезанных мной на какой то офисной бумаге стандартной плотности:
вырезал небрежно, тапком не кидать![](https://habrastorage.org/files/9ab/999/6c7/9ab9996c75ac49289aef96ee114ef475.JPG)
![](https://habrastorage.org/files/8bd/3db/4f6/8bd3db4f6d9345bfad455a30f78df10b.JPG)