| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Зная внутренний контур помещения и исключающие контуры внутри данного помещения, расставить устройства (извещатели, светильники)

Зная внутренний контур помещения и исключающие контуры внутри данного помещения, расставить устройства (извещатели, светильники)

Ответ
Поиск в этой теме
Непрочитано 06.12.2016, 09:56
Зная внутренний контур помещения и исключающие контуры внутри данного помещения, расставить устройства (извещатели, светильники)
veb86
 
Проектировщик электрических сетей
 
Пенза
Регистрация: 17.01.2014
Сообщений: 176

Здравствуйте! Я проектировщик электрик, хобби программирование). Соответственно пишу инструменты которые облегчают мне жизнь, инструменты больше похоже на скрипты, но с каждом разом все сложнее и сложнее. Писал на VBA, потом на dotNet. Теперь на free pascal пишу бесплатные инструменты под бесплатную программу ZCAD. Исходный код программы ZCAD. Исходный код прятать не собираюсь, так что те результаты которые мы получим с Вами, будут всем доступны.
Вводная часть закончена)
Задачу себе поставил сложную, их две, с разными условиями, как подступится даже не знаю. Первая задача определенно проще: И так есть помещение, на рисунке 1 показано синим контуром (внутренний контур помещения, по стене). Внутри данного помещения могут быть исключающие области (показаны красным цветом, так же по стене).
Помещение может быть любой формы, то что на рисунке, вроде бы должно учитывать все формы, но может быть что не учел.
Внутри данного помещения надо расставить пожарные извещатели (дымовые или тепловые), расстояние от извещателя до стены и расстояние между извещателями прописано нормами, для разной высоты потолков. Примем от извещателя до стены: 4,5м, между извещателями 9м, но цифры могут меняться по заданию пользователя.
Задача: Зная внутренний контур помещения и исключающие контуры внутри данного помещения, расставить извещатели, как на примере рисунок 2 (но это я так, быстро набросал, кривовато, программа должна более качественно расставлять)
Исходные данные:
1. Внутренний контур помещения — список координат узлов линий (полилиния)
2. Исключающие контуры внутри данного помещения - список координат узлов линий (полилиния)
3. Габаритные размеры извещателя (10х10см)
Если предложите готовый код программы которая такое делает, буду счастлив, но в такое слабо верится. Думал о генетических алгоритмах может название просто понравилось, боюсь начну копать и не туда, время только потеряю.

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

Но тут есть еще проблема, я не разу не считал точку освещенности (прям даже стыдно от этого) знаю что Кнорринг пишет об этом, но как то руки не доходили. Конечно программой диалукс я пользуюсь, точнее диалюкс ЕВО, все круто. Но все помещения в них прикидывать, это ни какого времени не хватит. Прикидка та что приводится разработчиками светильников, мне кажется грубой, хотелось бы с точками освещенности и если сделать правильный расчет, да тем более в самой чертежной программе, можно очень много рутины снять с себя. И конечно что бы работало с ies файлами. Знаю задача сложная, но решаемая.

Обращаюсь к форумчанам и не только, с целью поиска и решения задач, еще раз подчеркиваю все будет открыто и свободно.
1. Если вы знает как решить задачу освещенности, то решите ее, хоть на бумаге для одной точки с пометками что откуда берется, только для n - светильников, я расчет добавлю в программу и потом обсудим результат сравним с диалуксом.
2. По поводу расстановки устройств мысли, идеи, предложения, посоветуйте в какую сторону смотреть, что почитать, примеры или ссылки, буду рад любой помощи.

Миниатюры
Нажмите на изображение для увеличения
Название: 1.png
Просмотров: 40
Размер:	5.8 Кб
ID:	180327  Нажмите на изображение для увеличения
Название: 2.png
Просмотров: 51
Размер:	8.2 Кб
ID:	180328  


Последний раз редактировалось veb86, 06.12.2016 в 11:39. Причина: Добавл картинки и ссылку на исходный код ZCADa
Просмотров: 25241
 
Непрочитано 07.12.2016, 17:10
#21
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Цитата:
Сообщение от Владимир_М Посмотреть сообщение
Стойкое чувство, что Вы меня не поняли. Да именно целиком, и я про то же. Исходными данными для построения приведенной мной выше сетки является одна единственная полилиния. Разбиение на более простые площади происходит автоматически, контуры этих отдельных участков только "в уме" они даже временно не рисуются. И это только первый этап выполнения автоматического алгоритма.
Если это уже было понято, то тогда извините, не смею более отвлекать от экспериментов.
На сколько я понял, автору этот способ не подходит, т.к. в сообщение #8 я именно это и предложил. Нужно более элегантное и простое решение. Проблема в том, что тут либо простое, либо элегантное.
Boxa вне форума  
 
Непрочитано 07.12.2016, 17:33
#22
Владимир_М


 
Регистрация: 05.11.2015
Сообщений: 585


Цитата:
Сообщение от Boxa Посмотреть сообщение
На сколько я понял, автору этот способ не подходит, т.к. в сообщение #8 я именно это и предложил.
Ну, не подходит дело хозяйское...
К сожалению, по сообщению #8, я не смог понять что там к чему. Схемку может какую-нить поясняющую дадите.
Владимир_М вне форума  
 
Автор темы   Непрочитано 07.12.2016, 17:40
#23
veb86

Проектировщик электрических сетей
 
Регистрация: 17.01.2014
Пенза
Сообщений: 176


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
через костыли - это как? Все та же стандартная задача - контур и нахождение точки внутри нее.
Решение в лоб, нужны эксперименты)))
Запускаем перебор помещений(контуров), затем перебираем стены данного помещения(стороны контуров) , и строим из данной точки перпендикуляр к стенам(, если получилось построить перпендикуляр к левой стене,верхней,правой и нижний. значит точка внутри помещения.
Можно добавить лежит ли точка в исключающей области так же. только для исключающих областей
Чем Вам не костыль, решение плохое, работать будет почти всегда, но не всегда как обычно нужны эксперименты, в любом случае узнать лежит ли точка в многоугольном контуре гораздо проще чем расставить что то в нем, по определенным законам.
veb86 вне форума  
 
Непрочитано 07.12.2016, 17:44
#24
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,036


если контур замкнутый - можно через BREP (вроде так класс в NET называется) - и без всяких построений и поиска пересечений)
Сергей812 вне форума  
 
Автор темы   Непрочитано 07.12.2016, 18:58
#25
veb86

Проектировщик электрических сетей
 
Регистрация: 17.01.2014
Пенза
Сообщений: 176


Цитата:
Сообщение от Владимир_М Посмотреть сообщение
Стойкое чувство, что Вы меня не поняли. Да именно целиком, и я про то же. Исходными данными для построения приведенной мной выше сетки является одна единственная полилиния. Разбиение на более простые площади происходит автоматически, контуры этих отдельных участков только "в уме" они даже временно не рисуются. И это разбиение - просто только первый этап выполнения автоматического алгоритма.
Если это уже было понято, то тогда извините, не смею более отвлекать от экспериментов.
То что у Вас организовано разбиение на более простые площади автоматически это было не понятно, я думал Вы мне предлагаете это организовать
Поясните если не сложно, если помещение скругленное то Ваш алгоритм как его обрабатывает, так же разбивает? видит внутри помещения исключающие области?

Цитата:
Сообщение от Boxa Посмотреть сообщение
На сколько я понял, автору этот способ не подходит, т.к. в сообщение #8 я именно это и предложил. Нужно более элегантное и простое решение. Проблема в том, что тут либо простое, либо элегантное.
Извините, но наверное я тоже не понял что вы имели ввиду, вы хотите заполнить внутренний контур прямоугольниками, можете по подробнее рассказать, разложить свой метод (идею) по полочкам, только для рисунка №1 как вы видите раскладку Ваших прямоугольников.

Цитата:
Сообщение от Сергей812 Посмотреть сообщение
если контур замкнутый - можно через BREP (вроде так класс в NET называется) - и без всяких построений и поиска пересечений)
Я должен признаться я слабый программист, правильнее сказать скриптописец. Но скрипты успел по писать на разных языках и под разные программы. Функция BREP скорее всего из библиотек Teigha для дотнет, я писал скрипты на дотнете только под Брикскад, у них похожее АПИ. Увы системы автокад, и брикскад, и нанокад, дают мало возможностей в таких библиотеках. Либо идти в ARX или BRX. Благо Нанокад начал развивать библиотеку MultiCAD я даже под нее успел пописать, под бесплатный нанокад 5, сделал свою собственную линию, со своим именем свойствами, а после прозрел, что на работе мне такое никто не поставит, понял из разговора с админом. Надо регистрировать что то заполнять, а всем лень. А под платные писать глупо, сегодня они есть, а завтра их нет в пиратках. Яркий пример нанокад Электро, нет его пиратского, да и вообще никакого нет, кроме базы(которая не нужна), значит могут контролировать пиратство когда надо. Извиняюсь за ненужный экскурс в свою историю, вернемся
Я думаю в API ZCADа нет функции BREP, точно может сказать только zamtmn
пока шел домой подумал и пришел к выводу что искать надо не перпендикулярами, а лучами. провести 2 луча по х и у, если оба луча пересекаются с контуром дважды, значит точка внутри контура
veb86 вне форума  
 
Непрочитано 07.12.2016, 19:04
#26
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,036


Цитата:
Сообщение от veb86 Посмотреть сообщение
Функция BREP скорее всего из библиотек Teigha для дотнет
нет, это из комплекта акада )
Сергей812 вне форума  
 
Автор темы   Непрочитано 07.12.2016, 19:08
#27
veb86

Проектировщик электрических сетей
 
Регистрация: 17.01.2014
Пенза
Сообщений: 176


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
нет, это из комплекта акада )
Верю на слово, Вы пишите под Автокад вам лучше знать.
veb86 вне форума  
 
Непрочитано 07.12.2016, 19:13
#28
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,036


Точнее - MPolygon. Код проверил в свое время, работает.
Сергей812 вне форума  
 
Автор темы   Непрочитано 07.12.2016, 19:27
#29
veb86

Проектировщик электрических сетей
 
Регистрация: 17.01.2014
Пенза
Сообщений: 176


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Точнее - MPolygon. Код проверил в свое время, работает.
Базара нет хелп под автокад одно удовольствие, пока писал скрипты не одного вопроса на форуме не задал, открывай Автокадовское АПИ, там и примеров куча и под ВБА и под С# и VB.net сказка. Только сказка стоит 45 тысяч в год . В нашей организации около 30-40 машин итого около 1,5 млн в год. Извините за нескромный вопрос к Вам, у Вас просто профиль закрыт, Вы проектировщик или сотрудник автодеска?
veb86 вне форума  
 
Непрочитано 07.12.2016, 19:47
#30
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,036


Проектировщик + программист-самоучка.. в контексте ваша вопроса. А вы решили, что я акад навязываю? - если сумели перейти на аналог, то это очень хорошо. Акад уже особо не развивается.
Сергей812 вне форума  
 
Автор темы   Непрочитано 07.12.2016, 20:04
#31
veb86

Проектировщик электрических сетей
 
Регистрация: 17.01.2014
Пенза
Сообщений: 176


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Проектировщик + программист-самоучка.. в контексте ваша вопроса. А вы решили, что я акад навязываю? - если сумели перейти на аналог, то это очень хорошо. Акад уже особо не развивается.
конечно, решил что навязываете полностью перейти на zcad пока не возможно. Автокад умер, да здравствует Ревит! за BIM будущее!
veb86 вне форума  
 
Непрочитано 07.12.2016, 20:15
#32
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,036


Ну, например, у китайского zwcad вообще был NET API один к одному с акадом, библиотеки подключил соответствующие и базовые вещи работают с тем же кодом. Сильно не углублялся, так как во первых - это была демо на месяц, и во вторых - скоро после этого разразился скандал про заимствованный код из акада. Особенно в zwcad понравились кнопочки со значками Word и Excel - при нажатии на них запускались соответствующие программы: такой неприкрытый намек - что за разницу в цене функционал типа связанных с экселем таблиц реализуете сами)
Сергей812 вне форума  
 
Автор темы   Непрочитано 07.12.2016, 20:29
#33
veb86

Проектировщик электрических сетей
 
Регистрация: 17.01.2014
Пенза
Сообщений: 176


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Ну, например, у китайского zwcad вообще был NET API один к одному с акадом, библиотеки подключил соответствующие и базовые вещи работают с тем же кодом. Сильно не углублялся, так как во первых - это была демо на месяц, и во вторых - скоро после этого разразился скандал про заимствованный код из акада. Особенно в zwcad понравились кнопочки со значками Word и Excel - при нажатии на них запускались соответствующие программы: такой неприкрытый намек - что за разницу в цене функционал типа связанных с экселем таблиц реализуете сами)
Китайцы что тут скажешь). Когда я писал под Брикскад, там разница была в VBA только в том что вместо Autocad.application, надо было писать Bricscad.application и все работало. А уже когда перешел на net там все решали библиотеки teigha, далее не углублялся.
veb86 вне форума  
 
Непрочитано 07.12.2016, 22:39
#34
Владимир_М


 
Регистрация: 05.11.2015
Сообщений: 585


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Все та же стандартная задача - контур и нахождение точки внутри нее
Цитата:
Сообщение от veb86 Посмотреть сообщение
Запускаем перебор помещений(контуров), затем перебираем стены данного помещения(стороны контуров) , и строим из данной точки перпендикуляр к стенам(, если получилось построить перпендикуляр к левой стене,верхней,правой и нижний. значит точка внутри помещения.
Можно добавить лежит ли точка в исключающей области так же. только для исключающих областей
Цитата:
Сообщение от veb86 Посмотреть сообщение
пока шел домой подумал и пришел к выводу что искать надо не перпендикулярами, а лучами. провести 2 луча по х и у, если оба луча пересекаются с контуром дважды, значит точка внутри контура
и строим из данной точки Поясните, пожалуйста, про какую именно точку речь, откуда она берется?!
Цитата:
Сообщение от veb86 Посмотреть сообщение
Исходные данные:
1. Внутренний контур помещения — список координат узлов линий (полилиния)
2. Исключающие контуры внутри данного помещения - список координат узлов линий (полилиния)
3. Габаритные размеры извещателя (10х10см)
ни про какую точку не говорится

Последний раз редактировалось Владимир_М, 07.12.2016 в 22:47.
Владимир_М вне форума  
 
Непрочитано 08.12.2016, 05:14
#35
Владимир_М


 
Регистрация: 05.11.2015
Сообщений: 585


Кстати, на всякий случай
Цитата:
Сообщение от veb86 Посмотреть сообщение
подумал и пришел к выводу что искать надо не перпендикулярами, а лучами. провести 2 луча по х и у, если оба луча пересекаются с контуром дважды, значит точка внутри контура
Картинка внизу: лучи по х и у; оба луча пересекаются с контуром дважды. Но это не значит, что точка внутри контура.
Миниатюры
Нажмите на изображение для увеличения
Название: Точка и контур.PNG
Просмотров: 7
Размер:	17.3 Кб
ID:	180451  

Последний раз редактировалось Владимир_М, 08.12.2016 в 05:29.
Владимир_М вне форума  
 
Непрочитано 08.12.2016, 05:27
1 | #36
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


http://forum.dwg.ru/showthread.php?t=60794&page=2
старая похожая тема
zamtmn вне форума  
 
Непрочитано 08.12.2016, 06:02
#37
Владимир_М


 
Регистрация: 05.11.2015
Сообщений: 585


Цитата:
Сообщение от zamtmn Посмотреть сообщение
http://forum.dwg.ru/showthread.php?t=60794&page=2
старая похожая тема
Ознакомился. Да тема очень похожая. И таки соглашусь, с Вашим zamtmn подходом
"Да, похоже на правду."
Первоначальное разбитие на прямоугольники, походу, самый близкий к решению (оптимальному решению) поставленной задачи.
Вот интересно, что покажет Ваш алгоритм из той темы, если одна из сторон будет кривая, как в начальном примере ТС?
Владимир_М вне форума  
 
Непрочитано 08.12.2016, 07:00
#38
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


Сергей812
для определения лежит ли точка внутри контура есть старая добрая математика. на приложеной гифке работает алгоритм всего из нескольких строчек

Владимир_М
Вырежет прямоугольники которые есть, скругления не тронет - их надо другими алгоритмами "спрямить". В том топике был тестовый алгоритм, в него надо добавлять многопроходности и упрощение (удаление "лишних" вершин) контура между проходами
Миниатюры
Нажмите на изображение для увеличения
Название: polytest.gif
Просмотров: 30
Размер:	58.0 Кб
ID:	180460  

Последний раз редактировалось zamtmn, 08.12.2016 в 07:51.
zamtmn вне форума  
 
Непрочитано 08.12.2016, 07:31
#39
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


Вот результат расстановки в автоматом "разбитое" помещение. В принципе результат можно "сгладить" чтоб извещатели стояли на линиях. А если хранить результаты о "смежности" "прямоугольников" после разбивки, то наверно даже получится правильно сгладить))
Миниатюры
Нажмите на изображение для увеличения
Название: placing.PNG
Просмотров: 24
Размер:	18.1 Кб
ID:	180462  
zamtmn вне форума  
 
Автор темы   Непрочитано 08.12.2016, 09:49
#40
veb86

Проектировщик электрических сетей
 
Регистрация: 17.01.2014
Пенза
Сообщений: 176


Цитата:
Сообщение от Владимир_М Посмотреть сообщение
и строим из данной точки Поясните, пожалуйста, про какую именно точку речь, откуда она берется?!

ни про какую точку не говорится
ни каких точек не будет. Это был отступ от основной темы.

Цитата:
Сообщение от Владимир_М Посмотреть сообщение
Исходными данными для построения приведенной мной выше сетки является одна единственная полилиния. Разбиение на более простые площади происходит автоматически, контуры этих отдельных участков только "в уме" они даже временно не рисуются. И это разбиение - просто только первый этап выполнения автоматического алгоритма.
Цитата:
Сообщение от zamtmn Посмотреть сообщение
Вот результат расстановки в автоматом "разбитое" помещение. В принципе результат можно "сгладить" чтоб извещатели стояли на линиях. А если хранить результаты о "смежности" "прямоугольников" после разбивки, то наверно даже получится правильно сгладить))
Наверное все правы, надо все приводить к простым фигурам . Затем работать в начале с ними по отдельности, а потом с тем что получилось вместе. Думаю из этого что то получится. Тем более в ZCADе уже есть алгоритм которые разбивает сложное помещение, на простые. Осталось добавить скругленные формы, но это можно продумать. Спасибо всем!

Еще осталось вопрос с расчетом точек освещенности и ies файлами. Если кто то этой темой интересовался, хотелось бы получить консультацию
veb86 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Зная внутренний контур помещения и исключающие контуры внутри данного помещения, расставить устройства (извещатели, светильники)

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Узел устройства рельсового пути внутри цеха serge_kortenko Железобетонные конструкции 11 21.12.2017 17:26
Схема использования ж/б колец внутри бесподвального помещения Evgeny87 Основания и фундаменты 2 28.05.2014 10:17
В каком нормативном документе имеется информация о максимальной разнице температур внутри и снаружи жилого помещения? konvent Инженерные сети 6 15.03.2012 11:50
Чем лучше обработать дерево внутри помещения??? vbnz0586 Прочее. Архитектура и строительство 7 12.09.2011 18:00
Как расчитать требуемую мощность обогрева данного помещения? Creator Прочее. Архитектура и строительство 1 30.08.2011 16:44