Знакомьтесь, NoteCAD

Автор: admin от 21-11-2017, 13:35, посмотрело: 408

Создавать вещи своими руками приятно. Современный уровень развития технологий предоставляет небывалые возможности для домашнего производства — больше не нужно вручную выпиливать, вытачивать и строгать. В вашем распоряжении целый парк станков с числовым программным управлением: 3D принтеры, лазерные граверы, плазморезы, токарные и фрезерные станки. Созданные вами детали будут настолько хороши, что их не отличить от фабричных! Осталось только… Спроектировать! И здесь, вынужден признать, вам нужно быть профессионалом. Современные САПР — это квинтэссенция достижений науки и техники и с помощью них можно создавать сложнейшие детали и механизмы. Обычно подобные программы стоят дорого, а на их освоение нужно потратить много времени, прежде, чем вы сможете ими легко и непринужденно пользоваться. С другой стороны, существует множество различных онлайн-инструментов для проектирования, в том числе и довольно несложных для освоения. С их помощью легко создавать геометрически простые предметы, а если хочется сделать что-то посложнее, вам нужно быть либо программистом, либо иметь достаточно терпения и фантазии, чтобы из ограниченного набора примитивов составить сложную форму вашего изделия.



Знакомьтесь, NoteCAD


Мне захотелось решить эту проблему — создать такой инструмент, который будет, с одной стороны, прост в освоении и использовании, однако, позволит создавать сложные детали и механизмы при помощи параметрического подхода к моделированию. Если вы хотите узнать о процессе создания онлайн-инструмента для трехмерного проектирования, который называется "NoteCAD", добро пожаловать ПодКАТ! [любая рифма случайна]запилить свой движок, для данного проекта пришлось отказаться от этого. Дело не в желании или умениях, дело в целесообразности. Когда начинаешь делать движок, делаешь движок и только движок, и ни на что другое времени уже не остается. Важно умело распределять ресурсы, особенно, если хочется довести свой проект до релиза.



На рынке трехмерных движков существует великое множество как коммерческих, так и OpenSource проектов. Но, честно признаться, с точки зрения простоты и удобства разработки, альтернатив практически нет — есть только Unity. Несмотря на то, что этот движок все еще содержит множество фундаментальных проблем и странных ограничений, он все-таки завоевал сердца миллионов разработчиков. Простота определила их выбор, поскольку начинать разработку на этом движке — проще простого. Компонентная система сущностей лучше отражает структуру реальности, нежели классическая иерархия наследования, является удобной и гибкой как для разработчиков, так и для создателей контента. Возможность одной кнопкой собрать проект для любой популярной платформы, включая мобильные ОС и даже браузеры, делает этот движок самым привлекательным из всех. Но решающим аргументов пользу выбора Unity для меня является возможность избежать программирования на javascript (но это не полностью). Я не против javascript, но… На самом деле я не хочу пока что знать этот язык. Я все время избегал веб-технологий, создания сайтов и javascript. Что бы вам ни говорили, возможности мозга ограничены. В определенный момент новые знания, которые вы получаете, могут поместиться в вашей голове только ценой забывания чего-то старого. В любом случае, хорошо, когда задачу можно решить с помощью инструментов, которые вы уже знаете. Разработка идет быстрее и эффективнее, даже если качество результата чуть ниже (наверное, чистый javascript работает быстрее, чем компиляция C# в asm.js, но это не точно).



В любом случае, инструмент для разработки простого приложения должен быть простым. Unity удовлетворяет всем этим условиям. Конечно, я немного сомневался, не стоит ли мне все писать на чистом javascript, или может быть C++ & Emscripten, но накладные расходы на изучение новых инструментов плюс необходимость разработки движка не позволят выжить этому проекту. Я собираюсь сделать инструмент, который будут реально использовать, и правильный менеджмент разработки поможет это сделать.



Менеджмент разработки



Любая разработка ведется в условиях либо дефицита ресурсов, либо минимизации затрат. Когда в одиночку делаешь проект, кажется, что применять управление разработкой абсурдно. Берешь — и делаешь! Но оказывается, в таких условиях проще всего потеряться и уйти в чащу сложных разработок и алгоритмов, которые проекту в данный момент не нужны. У проекта может не быть "иконочек" на работоспособных кнопках, но красивый и законченных интерфейс странно будет смотреться без реализованной функциональности приложения. Нужно признать, что сколько бы свободного времени у вас ни было, каким бы эффективным программистом вы ни являлись, все это ограниченно. Я имею ввиду сравнение с сотнями человеко-лет, вложенными в крупные проекты САПР, вроде SolidWorks или CATIA.



Важным условием развития проекта является самоконтроль и четкий план, которому нужно обязательно следовать. Важно вовремя "бить себя по рукам", когда обнаруживается, что вы вдруг начали делать не то, что нужно проекту, а то, что хочется в данный момент. Тем не менее, важен баланс — свой проект, на то и свой, чтобы получать от него удовольствие, поэтому иногда можно позволять себе некоторые вольности. Отступить от плана можно только если удалось сделать что-то приоритетное быстрее, чем рассчитывал. К примеру, в данный момент мне хочется программировать проект вместо написания этой статьи, но приходится убеждать себя, что статья — точно такой же важный момент для проекта, как и его функциональность, ведь обратная связь обеспечивает необходимые данные для движения в нужном направлении.



Есть еще один немаловажный момент: cледует избегать разработки функций программы, которые по развитию сильно опережают средний уровень возможностей в проекте. Например, если вы делаете ремонт в новой квартире, перед тем, как в нее заселиться, вы сначала наклеиваете обои и кладете линолеум прежде, чем установить мебель. Есть сделать все наоборот, вам придется двигать мебель множество раз до того, как она, наконец, займет свое место. Это требует массы дополнительных усилий, что глупо и нерационально. Примерно таким же образом происходит и с "несвоевременным" функционалом, который не только отнимает время на разработку, но и все больше "сковывает" вас необходимостью его поддержки. Ввиду того, что на ранних этапах разработки архитектура приложения еще не утряслась, все время происходят архитектурные перестроения, говоря на языке ремонта, некоторые части обоев переклеиваются, а кое-где вместо линолеума кладется паркет, а там уже и плинтус отвалился))) А если вы не сильны в ремонте, переведу на язык эволюции видов: рыбам не будут полезны легкие для дыхания на суше, покуда не будут сформированы конечности для перемещения по ней. Сухопутные рептилии не могут появиться из рыб минуя стадию амфибий. Разработка — та же эволюция, поэтому органы программы должны развиваться синхронно и согласованно. Невозможно закончить часть целого, пока целое не будет закончено.



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



Целевая аудитория



В качестве пользователей NoteCAD я вижу людей, которые создают различные вещи своими руками. Это может быть 3d печать, разработка электронных устройств или даже строительство или ремонт.



Ключевые особенности




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

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

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

  • Поддержка STL. Файлы форматов для 3d печати можно будет загружать и использовать в процессе создания своих деталей. Их можно будет использовать в сборках и немного модифицировать.

  • Работа на всех устройствах. В первую очередь, NoteCAD будет доступен в браузере, но будут версии и для всех популярных ОС (Windows, Linux, MacOS, iOS, Android). Это позволит программе работать с максимальной производительностью и не будет ограничивать пользователя в сложности создаваемых деталей.



  • Доказательство оригинальности разработки



    Являясь контрибутором SolveSpace, я вынужден доказывать, что код нового проекта создан мной без использования чужого кода. Я принял решение записать видео с процессом создания спорных компонентов, а именно решателя геометрических ограничений. Мне неизвестно, может ли такой процесс служить аналогом clean room design, но уверен, что большинство вопросов об авторстве кода он снимает. Не следует рассматривать эти видео в качестве обучающих, цель их создания — доказательство, поэтому они содержат скучный процесс разработки, каким он выглядит со стороны. Конечно же, все самое интересное происходит внутри головы и, к сожалению, осталось за кадром.



    Первое использование программы



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



    Знакомьтесь, NoteCAD


    Итак, к текущему моменту разработаны следующие компоненты:


  • Решатель геометрических ограничений

  • Подсистема для инструментов

  • Сущность чертежа — отрезок прямой

  • Ограничения: Совпадение точек, расстояние между точками, угол между отрезками, равенство отрезков

  • Поиск замкнутых контуров

  • Триангуляция

  • Генерация тела выдавливания на 5 мм из замкнутых непересекающихся конутров

  • Загрузка/Сохранение файлов из браузера

  • Экспорт 3d модели в формат STL

  • Хостинг проекта http://notecad.xyz



  • Дальнейшие планы



    В скором времени, планируется выход в полноценное 3d пространство, возможность создавать тела выдавливания и вращения. Самым сложным шагом в рамках этого этапа будет создание геометрического ядра, поддерживающего булевы операции. Спасибо за внимание!



    Источник: Хабрахабр

    Категория: Железо » Сделай Сам

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

    Добавление комментария

    Имя:*
    E-Mail:
    Комментарий:
    Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
    Введите два слова, показанных на изображении: *