Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > конструктор чертежей


Автор: 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. ИМХО идентичная задача - стОит покопаться в этом направлении - наврняка можно нарыть и готовый код и/или соответсвующие пакеты (ну чтобы велик не изобретать). 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)