код программа для проектирования
Проектирование ПО для начинающих методом снежинки
Публикация может быть полезной скорее начинающим программистам, чем тем, кто знаком с разработкой и проектированием ПО (не нужно знать каких либо продуктов для проектирования ПО).
Я думаю, знающие согласятся, что их первый опыт программирования реального приложения (не Hello World) свелся с простому вопросу: с чего, собственно, начать? Как начать проектирование программы? Что писать-то?!
И, как правило, первый опыт — это куча кода, который потом либо забывался, либо переписывался полностью, в зависимости от нужности программы.
Я долгое время шарил по интернету в поисках рецепта проектирования, но везде все сводили к определенным моделям, которые как шаблоны, нужно было применить и на них натянуть свою программу. Для примера можно взять MVC — все знают, что это, но рекомендации, как реализовывать ее, разнятся кардинально.
И вот, однажды утром, мне пришла в голову простая мысль: а что, если программу проектировать по методу снежинки?
Что я сделал:
1. Нарисовал на листке бумаги, как выглядит программа (для консолей особой разницы нет, поймете по ходу повествования). Для примера, возьмем калькулятор.
2. Условно разделил лист бумаги на две части, в одной я начну описывать интерфейс, в другой — что собственно программа умеет делать, ее модель (бизнес-логика). Уже на этом этапе видно, что мы разделили программу на 2 части: представление и логику. При этом, если программа консольная, в представление у нас попадут команды, на которые реагирует программа и вывод, который она возвращает.
Контроллер же — это связь между частью интерфейса и моделью программы.
3. Для описания интерфейса первым делом перечисляются все однотипные элементы (например, кнопки, лейблы и прочее). Получается, уже на этом этапе мы описываем классы-родители. Например, калькулятор:
Красным я обвел одинаковые элементы, это меню, лейбл, текстовое поле, кнопки и радио.
Дальше я смотрю, можно ли разбить эти элементы на более конкретные? (Что, естественно, можно, так как у нас не одна кнопка). Соответственно, от кнопки я стараюсь образовать как можно меньше общих групп или, чтобы было понятнее, классов: это число-буквенные (не вычисляют, только вводят данные) и оперативные (нажатие на них может привести к вычислениям или иным операциям). Чем меньше мы образуем одновременных классов, тем больше уровень абстракции получаем, что весьма полезно может быть в будущем, я думаю все согласны с этим (удобнее будет дополнять функционал, всегда есть от чего наследовать).
Продолжая дальше разбивать на группы, мы придем к определению каждого окончательного класса, когда разбиение уже невозможно. А цепочка от него до нашей начальной программы будет цепочкой наследования. Если нас что то не устраивает, например, куда деть кнопку стирания последнего символа — мы всегда можем пройтись по дереву наследования и изменить ветвление или деление на классы. Описав интерфейс — мы получим шпаргалку для дальнейшего проектирования(мы же, в конце концов, не будем лепить пустые элементы на форму).
4. Аналогично поступаем с логикой, начиная от общего класса, все больше конкретизируя операции.
Если у нас есть какая-либо операция, уже известная, но не классифицированная, ее достаточно добавить, а потом уже вписать в выстраивающуюся модель.
Получится что-то вроде этого:
5. При расширении нашей программы — модификация проходит достаточно легко. Например, нам потребовалось, чтобы программа сперва читала строку, а потом уже вычисляла. Т.е. появляется парсер, который использует класс вычислений (уже реализованный) и контроллер (который читает строку, занося ее в текстовое поле при вводе и передавая после парсеру). Модификации уложатся едва ли не в три строки, плюс класс, описывающий парсер.
Если программа очень большая, сложная — всегда можно взять отдельный элемент и описать по вышеуказанному методу. Например, для многооконного приложения можно нарисовать снежинку для каждого окна. Для сложной логики — выделить глобальные операции, и поступить аналогично. К тому же, подобный метод работает не только от общего к частному, но и наоборот. Сперва мы набираем всё, что нам придет в голову, в виде кирпичиков или небольших деревьев. Если можем объединить во что то общее — мы получаем родительский класс. Если можем разбить на категории, мы получаем подклассы. И так, пока не останется кирпичиков без связей, не будет возможности разбить на подклассы и не получится снежинка.
Когда все будет сделано — можно начинать писать код. Но как его писать, это уже другая история… Впрочем, еще на этапе проектирования уже можно давать имена классам и кратко описывать их функционал.
Из плюсов — ничего не надо знать, нужны только лист бумаги, ручка (или векторный редактор) и базовые знания языка, на котором будет писаться программа (я опирался на Java). Получается очень наглядно и довольно легко, особенно для начинающих.
Из минусов — упрощенность, возможно некоторые особенности проектирования теряются, но это уже вопрос к тем, кто этим занимается давно и может что-либо подсказать или дополнить.
Обзор бесплатных 2D САПР
В сфере автоматизации проектирования с каждым годом всё сильнее укрепляют свои позиции параметрические трёхмерные САПР. Полезность такого подхода в инженерном деле сейчас не вызывает сомнений, и сфера применения такого подхода обширна.
Тем не менее, в инженерном деле остаётся место и для традиционного двумерного проектирования, и для этого есть соответствующие инструменты.
В комментариях под статьями на тему САПР (например 1, 2) на Habr попадаются упоминания о том, кто чем пользуется, и порой сведения оказываются неожиданными. А ещё остается открытым вопрос о доступной (а желательно бесплатной) САПР с правом коммерческого использования для мелких предпринимателей и мастеровых людей.
Двумерные САПР остаются по-прежнему востребованными по многим причинам.
Во-первых, они предлагают классический подход к проектированию, когда всё продумывает человек, а программа служит только для автоматизации графической рутины. Это привычно как черчение карандашом на листе миллиметровки, потому такие САПР легче в освоении, особенно для тех, кто изучал начертательную геометрию и инженерную графику.
Во-вторых, инженерам удобно работать с накопленным за долгие годы наследием из чертежей, а в проектах модернизации старых изделий приходится опираться на бумажные чертежи из архивов.
В 2D САПР удобно делать эскизы, теоретические построения, выполнять различные схемы и поэтажные планы, оформлять конструкторскую и технологическую документацию.
Кроме того, в некоторых случаях плоских чертежей и вовсе достаточно для полноценной реализации задуманного: например, для резки листовых материалов на фрезере или лазерном резаке с ЧПУ.
Также двумерные САПР как правило более доступны по цене и имеют низкие требования к аппаратной части компьютеров.
В каждой из таких систем хочется видеть как минимум такой перечень наиболее полезных возможностей:
DraftSight
Известный продукт от Dassault Systèmes, когда-то он входил в состав пакета SolidWorks для совместимости с AutoCAD и назывался DWG Editor.
Рис. 1. DraftSight хорошо поддерживает чертежи из AutoCAD
DraftSight поддерживает работу с форматами DWG и DXF в качестве основных форматов, предлагает как ленточный, так и классический интерфейс как в старых версиях AutoCAD.
Для черчения DraftSight предоставляет весь вышеупомянутый «джентельменский набор». Кроме этого, DraftSight умеет:
Кроме бесплатной версии, разработчики предлагают платную подписку за 150 долларов в год либо единоразовый апгрейд до профессиональной версии за 300 долларов — пожалуй, это одна из самых доступных коммерческих САПР.
Пользователям профессиональной версии становятся доступны дополнительные функции: новые команды, библиотека элементов оформления и блоков стандартных изделий для механики и архитектуры, сравнение чертежей, пакетная печать, подложки PDF и API для автоматизации.
К недостаткам можно отнести неприятный маркетинговый ход: в UI бесплатной версии остаются видимыми некоторые элементы (например Toolbox, QuickModify, BatchPrint), которые работают только в платной профессиональной версии.
В целом же программа позволяет работать с чертежами с достаточным уровнем комфорта и может считаться конкурентом AutoCAD LT.
Для активации бесплатной лицензии нужен интернет.
Поддерживаемые платформы: Windows, macOS, Linux. Лучше всего DraftSight реализован для Windows и пребывает в актуальном состоянии: периодически выходят обновления и патчи. Версии для Linux и macOS находятся в состоянии бета-версии.
nanoCAD
Следующий участник обзора — nanoCAD от компании Нанософт, который читателям Хабра уже хорошо известен. Это еще один универсальный «электронный кульман».
Рис. 2. Строим ракету в nanoCAD
nanoCAD также предлагает все основные удобства для черчения, кроме того, nanoCAD отличается такими особенностями:
К недостаткам можно отнести устаревание программы — развитие nanoCAD остановилось на версии 5.1 в 2013 году. По крайней мере программа по-прежнему располагается на сайте Нанософт и в личном кабинете пользователя можно получить файл бесплатной коммерческой лицензии, и есть надежды на обновление.
nanoCAD разрабатывается только под Windows.
DoubleCAD XT 5
DoubleCAD XT 5 — еще один бесплатный САПР класса «электронный кульман», напоминающий AutoCAD LT и nanoCAD вместе взятые.
Во многом аналогичный вышеописанным САПР своим джентельменским набором функций для черчения.
Рис. 3. DoubleCAD XT с примерами и библиотекой элементов
Siemens Solid Edge 2D Drafting
Siemens Solid Edge 2D Drafting это самый тяжеловесный участник нашего обзора.
Он отличается богатством возможностей, именитостью компании-разработчика и размером установочного пакета — 2,8 Гб. Разработчики из Siemens не стали отделять 2D САПР от полновесного трёхмерного параметрического САПР: при установке выбирается бесплатный режим работы — двумерное черчение и просмотр трёхмерный моделей, при этом устанавливается и всё остальное, но в нашем случае оно будет просто занимать место на диске.
При знакомстве с программой обращают на себя внимание такие возможности:
Рис. 5. Параметрические связи и оформление размеров в Solid Edge 2D
Мое личное впечатление — здесь всё серьезно. Программа мощная и требует изучения и набивания руки для продуктивной работы, после чего ее можно будет эффективно использовать для выполнения чертежей даже в профессиональной среде.
Есть и ложка дёгтя в бочке мёда:
QCAD и LibreCAD
QCAD и LibreCAD — известные кроссплатформенные open source программы для двумерного проектирования. Я разместил их в обзоре вместе, так как эти программы не только похожи визуально, но и наследуют общую кодовую базу.
Для привычных к AutoCAD-подобным САПР пользователей эти два приложения могут показаться неудобными. Но некоторые находят для себя подход к проектированию в QCAD и LibreCAD интуитивно понятным и удобным, так что это дело вкуса.
QCAD разрабатывается по большому счёту одним человеком и даже коммерциализирован в виде QCAD Professional: собранное приложение упаковано вместе с плагином для поддержки формата DWG и библиотекой стандартных изделий.
В Professional версию входит модуль Command Line Tools для пакетной конвертации CAD файлов. А QCAD/CAM это версия Professional с CAM модулем для получения G-code.
Рис. 6. QCAD прост и аккуратен
Доступный для скачивания установочный пакет по умолчанию содержит QCAD Professional в Trial режиме. Чтобы пользоваться QCAD бесплатно — придется отключить эти плагины вручную, или собрать Community Edition из исходников самостоятельно. Впрочем, если программа очень понравилась, то Professional версия обойдется всего в 33 евро, а CAM аж в 89 евро 🙂 Для обучения пользователей автор продаёт учебник в электронном и бумажном виде.
В свою очередь, LibreCAD это форк от QCAD Community Edition, который поддерживается командой энтузиастов и тоже имеет сообщество активных пользователей. Для LibreCAD собираются пакеты под все популярные операционные системы без каких-либо коммерческих плагинов.
Рис. 7. LibreCAD и его настройки
Поддерживаемые платформы: Linux, macOS, Windows, FreeBSD и другие Unix при сборке из исходников.
ZCAD это open source проект, который изначально разрабатывался как электротехнический САПР, но с недавнего времени автор разработал и универсальную версию.
Рис. 8. ZCAD в электротехнической конфигурации
Разработка программы подробно освещается автором в отдельной теме на форуме dwg.ru. Автор рад общению с пользователями и любезно предоставил список преимуществ и недостатков своего продукта.
Установочный пакет публикуется для Windows, но так как ZCAD разработан на Free Pascal в среде Lazarus, то его можно собрать из исходников и для Linux.
Как видите, бесплатный 2D САПР с правом коммерческого использования не только существует, но даже есть из чего выбрать.
На этом всё, желаю всем воплощения ваших идей в металле.
Рейтинг лучших бесплатных программ для 3D-моделирования (для начинающих) на весну 2021 года
Существуют сотни различных бесплатных программных инструментов для 3D-моделирования для новичков, желающих создать свои собственные 3D-модели. Пользователи могут экспортировать свои модели и либо напечатать их на 3D-принтере, либо разместить в интернете, чтобы другие могли загрузить их бесплатно или за деньги.
Эти программы варьируются от простых в использовании для новичков до профессиональных, на изучение которых могут уйти годы. Поэтому мы создали свой список лучших бесплатных программ для 3D-моделирования, чтобы помочь вам сделать выбор.
Некоторые бесплатные онлайн-программы работают полностью в браузере, другие нужно загрузить. Но все они, по крайней мере в краткосрочной перспективе, бесплатны.
Список лучших бесплатных программ для 3D-моделирования в 2021 году:
TinkerCAD — лучшая программа для начинающих
3D Slash — простая программа для начинающих
FreeCAD — бесплатная программа с открытым исходным кодом
Blender — расширенная бесплатная программа
Критерии, которые использовались для оценки:
Простота использования. Бесплатными программами часто пользуются новички, поэтому это важно.
Наличие хорошо проработанного набора инструментов для создания профессиональных 3D-моделей.
Наличие новых инструментов, которые дают возможность использовать совершенно новый подход к созданию 3D-дизайнов.
1. TinkerCAD — лучшая бесплатная программа для начинающих
Это одна из многих программ 3D CAD-гиганта Autodesk, TinkerCAD. Инструмент обманчиво выглядит примитивным, прост в использовании, но снова и снова попадает в топ лучших бесплатных программ.
TinkerCAD позволяет создавать детализированные 3D-модели, используя базовые формы, соединяя их вместе. Процесс обучения намного проще, чем в других программах. Она идеально подходит для новичков и детей, для обучения детей 3D-печати. Ее чаще других используют в школах и классах по всему миру. Можете начать работу за считанные минуты в браузере без загрузки. Более того, можно скачать приложение TinkerCAD и поиграть с моделями на смартфоне или планшете!
Autodesk производит множество программ для различных отраслей. TinkerCAD идеально подходит для начинающих в 3D-дизайне, позволяет сделать что-то классное. Вы можете экспортировать модель в STL и любом другом формате и отправить на печать на 3D-принтере. Как только вы приобретете необходимый опыт, вам может понадобиться более сложная программа, например AutoCAD. Но при этом TinkerCAD остается отличной программой для начала вашей карьеры 3D-дизайнера.
2. 3D Slash — простая бесплатная программа для начинающих
Идеально подходит для новичков. 3D Slash не похожа на обычную программу, больше похожа на дружественный, интерактивный 3D-мир, где вы можете создавать, что угодно. Команда разработчиков четко продумала, как сделать пользовательский интерфейс максимально естественным, понятным не дизайнерам, без сложного процесса обучения. Функционал интуитивно понятен и удобен.
3. FreeCAD — бесплатная программа с открытым исходным кодом
FreeCAD была выпущена еще в 2002 году, и несмотря на то, что все еще находится в стадии бета-тестирования, ее разработка значительно продвинулась. Она предназначена для того, чтобы сделать процесс создания 3D-версий реальных объектов максимально эффективным и простым.
FreeCAD идеально подходит для пользователей с некоторым опытом проектирования, так как часть инструментов может оказаться сложной для начинающих. Но в целом это очень мощный бесплатный инструмент для 3D-моделирования.
4. SketchUp
Несмотря на то, что SketchUp пользуются в основном архитекторы, она приобретает все большую популярность в 3D-печати. Инструменты удивительно хорошо подходят создателям 3D-CAD-файлов. Вы можете загрузить расширение SketchUp STL, чтобы создавать файлы в STL.
SketchUp имеет простой интерфейс, не перегруженный информацией. Вы можете легко разобраться в нем за несколько часов и в первый же день создать очень реалистичную 3D-модель.
5. Blender — расширенная бесплатная программа
Страна разработчика – Нидерланды.
Возможно, это самое популярное программное обеспечение для 3D-дизайна. Blender имеет огромное активное сообщество, которое делится своими STL-файлами и 3D-моделями, а также информацией в интернете. Быстрый поиск Google и YouTube выдаст тысячи ссылок, где пользователи демонстрируют свои 3D-проекты и обмениваются опытом работы в Blender 3D. Такая популярность обусловлена прежде всего тем, что программа на 100% бесплатная и с открытым исходным кодом. В ней можно создать практически все, что угодно. Выбор инструментов огромен.
Процесс обучения более сложный, чем у предыдущих программ. Однако благодаря своему набору инструментов Blender универсальная программа для 3D-моделирования. Она используется в различных областях, начиная от создания VFX для фильмов, видеоигр, дизайна 3D-моделей, заканчивая 3D-печатью. Кроме того, Blender поставляется с интегрированным игровым движком, а также детализированными инструментами для моделирования и возможностью редактирования видео. Это невероятное бесплатное программное обеспечение идеально подходит для разработчиков игр и опытных 3D-моделистов.
6. MeshMixer
Страна разработчика – США.
Meshmixer – уникальная программа, не вписывающаяся ни в одну конкретную категорию. Еще одна разработка Autodesk, Meshmixer выгодно отличается от конкурентов тем, что позволяет редактировать существующие модели с помощью различных инструментов, включая анимацию, выгибание/заполнение, восстановление. Meshmixer хорошо подходит для модификации конструкций и обеспечения качества. Полезна как для начинающих, так и для экспертов. Позволяет улучшать и готовить свои модели к 3D-печати.
Еще одно важное преимущество программы – возможность ее использования в топологической оптимизации. Благодаря простым инструментам, детали можно сделать легче и экономичнее. Это особенно полезно для последующей 3D-печати в таких отраслях, как аэрокосмическая и автомобильная промышленность, где очень важен вес модели.
7. Fusion 360
Страна разработчика – США.
Обладает мощными инструментами для работы практически над любым промышленным 3D-дизайном. Имеет встроенные функции для оценки нагрузки, с которой столкнутся компоненты 3D-модели. Это позволяет дизайнерам находить потенциально слабые места перед печатью. После создания можно легко экспортировать модель в STL-файл или любой другой формат. Программа недавно стала бесплатной для студентов, стартапов и многих других. Если у вас есть некоторый опыт, или вы хотите повысить свои навыки в 3D-дизайне, это 3D-программное обеспечение идеально подойдет.
8. Vectary
Vectary появилась в 2014 году и называет себя самой доступной платформой 3D- и AR-дизайна. Это бесплатная веб-программа для 3D-моделирования. Vectary предлагает шаблоны с предварительно отрисованными и освещенными экранами, перед которыми вы можете разместить свои 3D-модели для съемки продукта и других художественных целей. Простой рабочий интерфейс с необходимым набором инструментов делает работу с освещением и моделированием легкой. Вы можете легко экспортировать готовый дизайн или сцену в виде AR-модели.
Бесплатный пакет включает в себя доступ к Vectary Studio для создания и проектирования моделей, а также возможность экспортировать ваши творения в форматы OBJ или STL. Для других форматов вам потребуется обновление. Бесплатно можно создать до 25 проектов, а также получить доступ к библиотеке 3D-активов, материалов и иконок Vectary. Платное обновление дает доступ к инструментам предварительного просмотра AR, а также к функциям совместного использования проектов и командам для лучшей и быстрой обратной связи между несколькими людьми.
9. SelfCAD
Страна разработчика – США.
SelfCAD фокусируется на том, чтобы быть лучшей браузерной бесплатной программой для 3D-моделирования для студентов по всему миру, которую не надо скачивать. Она популярна в американских школах, обучающих студентов 3D-дизайну. Простая и удобная в использовании, требующая короткий период обучения, SelfCAD имеет все необходимые инструменты для создания моделей. Также в ней есть инструменты нарезки для подготовки файлов STL или G-кода к 3D-печати.
10. BlocksCAD
Программа предоставляется бесплатно. Есть платные учебные версии для школ.
Страна разработчика – США.
BlocksCAD ориентирована на обучение и была создана для учащихся по модели STEM с 3-го по 8-й классы. Это облачное бесплатное программное обеспечение для 3D-моделирования, которое способствует изучению математики, вычислительного мышления, концепций кодирования и проектирования моделей для 3D-печати.
В свободной галерее имеется широкий выбор проектов, которые можно использовать в личных и классных работах, начиная от снеговиков, ювелирных колец, рыб и даже печально известного кафетерия. Отлично взаимодействует с OpenSCAD, предназначена для простой, веселой и удобной работы для детей. 3D-модели можно создавать с помощью красочных, простых в управлении блоков, и экспортировать либо в виде STL-файлов, либо в виде файлов для открытия и редактирования в OpenSCAD. Для новичков BlocksCAD предлагает обширные учебные пособия по основам 3D-моделирования и использованию 3D-программного обеспечения.
11. OpenSCAD
OpenSCAD – бесплатная загружаемая программа. Выглядит устрашающе, поскольку «окутывает» кодами и скриптами. Это мощный инструмент. Но имейте в виду, что он для тех, кто привык к кодированию. Программа была создана еще в 2010 году Мариусом Кинтелем и Клиффордом Вольфом. Регулярно выходят новые обновления и патчи. OpenSCAD любят 3D-дизайнеры, которые предпочитают скриптовый, а не художественный метод проектирования. Стоит также отметить, что 3D-деталь в OpenSCAD можно создать использую лишь мышь, но это не единственная фишка программы.
В целом, мы впечатлены OpenSCAD: она предлагает что-то новое и бесплатно. Однако необходимо, по крайней мере, промежуточное знание языков сценариев. В противном случае лучше использовать один из других вариантов из нашего списка.
12. Wings 3D
Каждый пункт меню контекстный, поэтому, когда вы щелкаете правой кнопкой мыши, появляются различные опции в зависимости от того, что вам может понадобиться. Этот продвинутый инструмент экономит время и делает программу отличным инструментом для 3D-моделирования для начинающих и экспертов.