Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Алгоритмы > конструктор чертежей |
Автор: m_maxser 7.10.2013, 09:31 |
Здравствуйте, На работе появилась задача разработать конструктор чертежей. Общее описание такое: загружается svg-документ, который содержит стилизованное изображение помещения, т.е. это просто фон. На этом изображении есть только неразрушаемые объекты (внешние/несущие стены, колоны, лестницы и т.п). Все остальное пространство должно заполняться пользователем. Пользователь может добавлять/удалять стены/двери, проводить линии коммуникаций (электропровод, водопровод, газо... и т.п.). Пользователей два типа: менеджер и инженер. Инженер может запретить изменять некоторые участки планировки. Вижу решение так: создаю таблицы "Точки" и "Линии". Думаю, что с первой таблицей все понятно - это координаты. "Линии" - это связи из двух точек, у которых указывается тип (стена, водопровод и т.п.). Потом все тупо отрисовывается по координатам. За неимением других идей, приступил к реализации этого метода. Хотел бы узнать как другие специалисты подошли бы к решению этой задачи. Спасибо. P.S.: это все разрабатывается под веб, пользователь работает с системой через браузер. |
Автор: ksnk 7.10.2013, 10:14 |
По интерфейсу - должно получится visio - довольно удобный инструмент для всякого разного чертильно-диаграмного. В качестве онлайн альтернативы - можно посмотреть https://www.lucidchart.com/pages/tour/visio_alternative Для самодельного проекта сложновато, но подсмотреть и потырить некоторые идеи и их браузерные реализации вполне можно. |
Автор: m_maxser 7.10.2013, 11:28 |
ksnk, спасибо. ссылка интересная. Вопрос отрисовки меня пока не сильно беспокоит (использую fabric.js), мне сейчас куда важнее правильно спроектировать алгоритм. Как правильно описать сущности (стены, линии коммуникаций, неразрушаемые объекты) со стороны фронтэнда и бекэнда? Как сделать это все масштабируемым? Вдруг они захотят впоследствии еще и мебель там размещать? |
Автор: ksnk 7.10.2013, 12:30 |
m_maxser, Есть "объекты" - столы, стулья - они задаются контуром с фиксированным размером и центральной точкой. Могут вращаться. Есть коммуникации - провода, трубы, стены - задаются граничными точками, имеют ширину. При изменении граничных точек коммуникация перерисовываются. Есть объекты - подписи, элементы блоксхем - задаются контуром и могут растягиваться по XY. По идее - этого может быть достаточно для начала. Потом можно ввести "чертежные размеры" |
Автор: _Y_ 7.10.2013, 17:36 |
Существует море программ позволяющих расставлять мебель по кватрире: как на плане, так и в 3D. ИМХО идентичная задача - стОит покопаться в этом направлении - наврняка можно нарыть и готовый код и/или соответсвующие пакеты (ну чтобы велик не изобретать). |