Давайте познакомимся! Меня зовут Александр и сейчас я поведаю немного о том, о чём я планирую тут вещать =)
Большую часть своей сознательной жизни я страстно занимаюсь проектированием. Сначала в архитектуре (частное домостроение), а теперь уже продолжительное время в сфере мебельного производства (проектирование, программирование и управление станками с ЧПУ). В этих, как и во многих других, технических/творческих специальностях присутствует немалое количество рутинных процессов, которые стандартными программными средствами бывает сложно избежать. И тут как нельзя кстати пришлась вторая моя любовь - любовь к автоматизации и программированию =)
Глава 1. ArchiCAD, GDL
Первой такой рутинной задачей для меня стал подсчёт количества арматурных прутков в ленточном фундаменте. Проектировал на тот момент я в ArchiCAD 16 (2012 год), стандартными средствами программы эту задачу решить было практически невозможно и решали мы её довольно примитивным, но верным дедовским способом - бумажка-ручка-калькулятор. Это занимало огромное количество времени, а главное - никакого веселья =). Тогда я задумался: как же возможно автоматизировать этот процесс, а так же избежать ошибок человеческого фактора. На помощь пришел встроенный в ArchiCAD редактор GDL объектов. Объекты GDL - 3D объекты в среде ArchiCAD, наделённые параметрами, а параметризовать их возможно было только умея программировать (это была модификация Visual Basic, созданная для работы в среде ArchiCAD).
Опыта в программировании у меня на тот момент не было совсем, только какие-то школьные остаточные знания, но очень хотелось в этой магии разобраться =)
Результатом копания в чужом коде и изучения языка программирования явилось целое семейство параметрических объектов, которые и по сей день пользуются спросом у публики, не смотря на то, что в далёком 2014 году я уже перестал поддерживать и разрабатывать эти объекты =) Мне до сих пор периодически звонят и пишут с вопросами и просьбами продолжить разработку, хотя, казалось бы, за это время уже наверняка что-то подобное могли написать более опытные и сильные программисты. Но увы =(
Это был первый опыт знакомства с программированием, базовыми конструкциями, массивами (а-а-а-а-а!!!), и до кучи ещё написанием простенького юзер интерфейса. Объект выполнял не только визуальную функцию, но и содержал в себе все нужные расчётные параметры, благодаря которым составление сметы делались в разы быстрее, чем раньше! Больше никаких расчётов на калькуляторе, ошибки свелись к минимуму, рутина документации сошла на нет. Ну как после этого не влюбиться в программирование? =)
Кому интересно, тема с библиотекой объектов всё ещё существует на старом добром архикадовском форуме. Можете посмотреть, воспользоваться объектами, а так же посмотреть код (не заглядывал сам в него уже очень давно, но уверен - там сущий ад в плане качества) =))
Дальше уже последовала моя первая коммерческая разработка для компании GranDecor - производители резного мебельного декора. С этих объектов я сам тащусь. В то время для себя им применения я бы не смог найти. Зато сейчас, работая в мебельной отрасли я понимаю какое это золото! =)
В этом проекте я научился подключать внешние файлы, осуществлять более продвинутую работу с массивами, а главное - это был мой первый опыт работы на фрилансе! Благодаря этому проекту я довольно сильно углубился в мебельную тематику, а архитектурная отошла на второй план. Пришло время менять сферу деятельности =)
Глава 2. Базис Мебельщик, Базис Скрипт
Так я оказался в сфере мебельного производства, устроился на должность конструктора-технолога. Пришлось оперативно осваивать техническую документацию, производственные станки, новый софт для проектирования. На тот момент это был Базис Мебельщик 8-й версии. Кто-то и по сей день работает в этой версии, не смотря на то, что вышла она аж в 2014 году. Это единственная "народная" версия (которой возможно было пользоваться без лицензии), благодаря чему мне удалось вдоволь изучить продукты Базис-Софт и прочувствовать их прелесть =) Но были разумеется у этой программы и ограничения, не позволявшие осуществлять рутинную работу быстро и безболезненно. На помощь пришла моя любимая автоматизация через скрипты.
В Базисе программирование скриптов реализовано через модификацию Java Script, с коим я был совсем не знаком, знакома была только логика программирования. Что такое функциональное программирование я слабо понимал, но опираясь на референсы других пользователей Базис-Скриптов я кое как это освоил (на самом деле до сих пор разбираюсь с некоторыми нюансами). Удалось сварганить скрипт параметрического мебельного корпуса, нечто универсальное, подходящее под параметры производства, с возможностью кастомизации. И как всегда приятным бонусом был автоматический расчёт мощности подъёмных механизмов, расчёт установки крепежа с определенной кратностью, подходящей под станки, автоматически рассчитанные выдвижные системы с невозможностью установить неподходящий артикул - сказка!
Сейчас этим уже сильно никого не удивишь - в новых версиях Базиса реализовали параметрические секции, но на то время для меня лично это был большой скачок в скорости проектирования. Что касаемо программирования - тут тоже небольшой левел ап случился: я научился разбивать объёмный проект на модули (а это более 3к строчек кода), чуть чуть углубился в функциональное программирование, но всё равно это было ещё пока по большей части копирование и разбор чужого кода. На момент 8-й версии базиса документация Базис-Скрипт была очень куцая, мне, как новичку программирования, давалось туго. Прокачивался скилл гугления =) Но скрипты работали большей части безошибочно (уж точно лучше, чем полностью на человеческом управлении.
- Если заинтересовал скрипт корпуса - готов поделиться, но учтите специфику конкретного производства.
В общем опыт закрепился, есть некоторые наработки для автоматизации рутины, коими пользуюсь и по сей день. Готов с вами делиться, подписывайтесь! =)
Глава 3. ArtCAM, Rhinoceros, Grasshopper
Профессиональная деятельность вновь сделала крюк, когда я познал магию станка с ЧПУ - для меня это действительно было что-то завораживающее, сочетающее в себе проектирование, программирование и непосредственное участие в производстве изделия. Изучил ArtCAM - одна из самых популярных и не супер сложных систем для написания управляющих программ для станков. Не хватало опять же автоматики в отрисовке повторяющихся элементов, какой-то удобной завязки с тем же Базис Мебельщиком, ведь по прежнему большая часть деталей проектировалась в нём и кочевала в ArtCAM - конвертация чертежей в нужный вид отнимала уйму времени.
На тот момент я уже был знаком с программным комплексом Rhinoceros - за не самым привлекательным интерфейсом скрывалась мощь кастомизации. Практически любую функцию, которую невозможно было исполнить посредством стандартных инструментов можно написать самому на VB или Python (на тот момент я не умел ещё, но понимал, что возможность такая есть, а это путь к большим перспективам =). Но самый сок скрывался в плагине Grasshopper - визуальное программирование, NoCode, возможность программирования без знания какого либо языка, а это уже развязывает руки в проектировании, позволяет создавать собственные программные узкоспециализированные продукты без сильных умственных затрат.
Вот например небольшая демонстрация скрипта, выполняющую функцию создания геометрических узоров (паттернов) на мебельных фасадах. Все вот эти прямоугольнички соединенные между собой проводами - по сути своей куски кода, которые в определенной последовательности создают программу, а программа в свою очередь создаёт нужную вам геометрию, подвластную именно той логике, которую вы ей укажете. Вот так всё становится просто благодаря Grasshopper =)
Вот ещё, пару лет назад писал для своего станка генератор G-Code! Сам в шоке, но и это можно =)
Возможности воистину безграничны! Я видел, как грассхоппер используют для моделирования сосудов человеческих органов для проведения микрохирургии! 0_о
Это далеко не всё, что мне привелось программировать с помощью Grasshopper, есть ещё куча интересных вкусностей, которыми буду делиться с вами в этом блоге.
Эпилог
Мой путь в изучении автоматизационных процессов продолжается. Сейчас я нахожусь в процессе изучения языка Python, уже пишу понемногу скрипты для Rhino и Grasshopper с помощью него и надеюсь когда-то уже перерасти в полноценного разработчика =) А пока вот я здесь для вас, готов делиться своим опытом с теми, кто так же горит вопросом параметризации всего и вся, особенно касаемо проектирования и мебельного производства.
Буду рад обратной связи! =)