Новый макрос «Конструктор узоров»

Те, кто следит за моим сайтом, наверное читали заметку несколько недель назад, что я приобрел плоттерный резак. И вроде бы программа в нем ничего (Silhuete Cameo Studio), но как обычно, не без изъянов. Поскольку в плоттере есть возможность рисовать ручками, перед порезкой, я сразу же решил, а ведь крайне удобная штука! И правда, очень удобная (особенно учитывая мою криворукость в плане почерка), но как оказалось, одна вещь этой программе не по зубам. А именно — в ней практически нереально задать мало-мальски интересную геометрическую «заливку». То есть, как постркипт текстуры он внутрь надписей к примеру, добавляет. Но очень криво (они масштабируются по разному в разных буквах)! А вот чтоб элементарно внутри контура буквы даже простую сеточку нарисовать — увы, тут алгоритмы у программы спотыкаются. Правда, есть очень хороший «лаз» для опытного станочника, а не домохозяйки, на которую рассчитан данный агрегат и соответственно программа! Она может импортировать из dfx! Я тут же попробовал сделать задуманное в любимом Corel Draw, и у меня это более менее получилось и нарисовать и напечатать. Почему более менее? Это отдельная тема. не о ней сейчас! Итак, стал вопрос за векторными текстурами. И поскольку, у меня по макросу «Конструктор шкатулок» уже был опыт в создании геометрических узоров, да и давно такая идея у меня витала, я засел за написание отдельного макроса. И вот спустя 2 недели, хочу поделиться некоторыми успехами. Основные моменты описаны в видео.

Сразу оговорюсь, работа только в самом начале и реализовано даже далеко не всё, что уже выведено в виде контролов. Но главное — проверены алгоритмы!
А вот примеры которые я наваял наверное минут за 10-15, пока готовил материалы:

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

Я уверен, что по мере готовности этот макрос найдёт своих пользователей!

Узорное дно для овальных шкатулок (обновление 0.95.10)

Делал недавно небольшой сувенир для своей знакомой на юбилей. Решил для разнообразия попробовать сделать овальную шкатулку со стенками — вставками.


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

ЗЫ. На качество особо внимание не обращайте! Потом переделал очень много, правда второпях фото не сделал.

Прототип интерфейса JewelBox(0.2.0.0)

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

На видео я демонстрирую что то наподобие интерфейса с вкладками. Помимо той что было раньше (3D вид+развёрнутый чертёж) я добавил прототип работы с отдельным чертежом в 2d.
По пути приходится решать очень много проблем, в частности с библиотекой интерфейса ImGui, который я на данном этапе использую для построения всех контрольных элементов. Он весьма прост и удобен для пользования, но как оказалось не в варианте программ типа CAD систем. Может быть, увы, но придётся от него отказываться.

JewelBoxCAD Добавление стенок в перехлёст. Автоматический расчёт смещений (версия 0.1.8.8)

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

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

Во первых, показываю как разом можно сменить тип соединения сразу на всех четырёх угла (был паз, стал перехлёст).
Далее следует демонстрация автоматического смещения места соединения от боковой грани. Причем, возможно как изменение сразу у всех имеющихся граней этого типа (а не только той что выбрана!), так и можно далее осуществлять изменения у каждой из граней по отдельности (хотя я с трудом представляю зачем могут понадобиться разные смещения, но вдруг!).
Третий блок это показывается как на задней стенке сменяется тип соединения с «перехлёст» на шип и дальше стоит отметить, что смещение боковых граней теперь меняет длины задней стенки на требуемую величину!
Ну и в заключении, я показываю что изменения размеров изделия так же корректно учитывается при расчётах заданных соединений.
Вся загвоздка в том, что я хотел получить максимально гибкий механизм. Скажу честно — работы ещё не початый край! Пока ещё есть ошибки  в работе алгоритма. В частности не всегда корректно пока ещё работают смещения, когда сочетаются не одинаковые типы соединения для одной стенки. Но в целом — прогресс есть, и поэтому спешу им поделиться.

Добавление выбора вида замков в шкатулке-книжке (обновление 0.95.9)

Как то упустил, но заметил, что в шкатулках книжках только самый простой вид замка. Решил в новом обновлении исправить данную ситуацию!

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

Крышка при закрытии просто фиксируется на шипах и потом легко снимается, при этом не болтаясь когда она закрыта.

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

JewelBoxCAD. Добавляем выбор деталей мышкой! (версия 0.1.4.0)

Довольно активно продолжаю работать над новым проектом, лёгкой CAD системы ориентированной на изготовление чертежей для разных CNC станков. На сей раз я озадачился как можно на более ранних сроках определиться с полноценной работой мышкой над 3d моделью в реальном режиме времени. Надо сказать — задача оказалась не из самых лёгких. Пришлось подключать даже разработчиков фреймворка Cinder, который я взял за основу (правда, всё равно пришлось идти другим путём)! Но, вроде бы получилось! Конечно, до полноценного взаимодействия ещё далеко, но результаты есть!

На видео можно видеть, что при наведении на стенку, она становится полупрозрачной (или сразу несколько стенок, смотря сколько попадает под курсор). Щелчек выделяет эту стенку, и её параметры становятся доступны для редактирования. В общем — уже почти нужный уровень взаимодействия с моделью! Так же можно таскать модель по всему экрану.
Ну, из мелочей ещё сделал полноценную отрисовку чертежа (очень напоминающую ту, что есть в макросе Шкатулки). Выбор цвета стенок. Пока всё! Но работа идёт и довольно интенсивно! Думаю, к лету понадобятся бетта-тестеры.

Важное исправление по перегородкам и своя форма выбора цвета линий (обновление 0.95.8)

  1. Добавил свою форму выбора цвета. В Windows 8 и 10, перестал работать стандартный диалог выбора цвета, и поэтому были некоторые неудобства с выбором цвета. В итоге, заменил на свою пусть и простую, но в целом работающую форму:
    2. Как всегда пользователи мне активно помогают с поиском багов в макросах. Вот обнаружилась проблема с перегородками. Если толщина материала стенок перегородки отличается от толщины стенок изделия, то чертёж оказывался дефектным. Исправил эту ошибку (а так же ошибку неверного крепления на шипы для поперечных перегородок), а так же по пути в ходе тестирования обнаружил, что вся схема с расчётами просто разваливается в пух и прах для соединений на защелках и соединений стенка на шип в стенку. Пока не найдено решение, я заблокировал возможность создавать перегородки для этих режимов стенок и дна.

Продолжение работы над JawelBoxCAD(0.1a)

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

Начата работа над новой программой: JewelBoxCAD!

Спешу поделиться с первыми наработками по новой программе:»JewelBoxCAD»
Это будет программа, которая позволит в реальном времени производить проектирование различных декоративных изделий на станках ЧПУ. Те, кто пользуются моими макросами, замечают что в них не хватает интерактивности. Надо сперва продумать всё (размеры, внешний вид и т.д.), и лишь потом ввести параметры. Ну или делать проектирование в несколько приёмом с правкой каких-то параметров.
Меня самого не очень устраивает такая работа, и давно хотелось начать делать софт, который не накладывает на меня столько ограничений в плане программирования, как это есть в макросах к CorelDraw. Я довольно долго готовился к началу этого процесса, собирая различный материал и тестируя разные инструменты для программирования. Но вот после Нового года, я наконец более менее почувствовал что могу эксперименты. Вот что получилось за первую неделю работы:

Это само собой далеко не конечный вид программы, а просто эксперимент, в котором я отрабатываю работу объемными моделями и работой с чертежами в параметрическом виде в реальном режиме времени.
Ну и напоследок хочу сказать, само собой работа над макросами не прекратиться. И вполне может быть, что на базе этой программы, я смогу написать отдельный модуль для подобной интерактивности в макросе. Но это будет не скоро. Как и сама программа, судя по всему. Но, начало положено!

Ещё новые контуры овальных крышек (обновление 0.95.5)

Продолжая изучать «внутренности» API CorelDraw, натолкнулся на ещё одну интересную функцию работы  с вершинами. После некоторых опытов, получилось ещё пару интересных (на мой взгляд!) узоров для овальных крышек и  появилось, пара так называемых параметрических  узоров (когда внешний вид довольно сильно меняется в зависимости от введённых параметров).
Узоры добавлены в той же вкладке, настроек овальных шкатулок:
Первые два новых варианта похожи друг на друга: шипованный узор (острый и сглаженный варианты):

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

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