Самый длинный путь
Главная › Форумы › Задать вопрос › Самый длинный путь
- В этой теме 15 ответов, 3 участника, последнее обновление 7 лет, 3 месяца назад сделано txt.
-
АвторСообщения
-
Буду рад любым соображениям в решении задачи:
Выбрал трубы и фитинги допустим по подающей линии ветви , скрипт просмотрел суммарные длины путей 0-1-2, 0-1-3-4, 0-1-3-5:
И определил какой путь от открытого трубопровода до одного из трех радиаторов самый длинный:
Это сложная задача. Та же задача у меня висит в списке, которые надо реализовать, уже год наверно. Я придумал использовать теорию графов. Моих программистских способностей на реализацию алгоритма поиска пути явно не хватит. Я решил поискать реализацию внешними библиотеками. Нашел несколько, которые можно использовать, но на этом забил, поскольку решил, что задача явно не для инженера-проектировщика а для уверенного программиста.
Короче, это не любительский уровень скрипта. Если хотите разобраться – разбирайтесь самостоятельно, но потратите кучу времени. Либо обращайтесь к программистам с правильно поставленной задачей.можно ли как то определить в списке фитингов , какие именно к этому фитингу присоединяются трубы ?
По общим точкам. Есть у фитингов точки расположения?
Здесь на форуме было описано о методе IsConnectTo подскажите может кто знает или пользовался, или хотя бы ссыль с примером с инет… я искал…
Пока мысли такие :
- ) я подаю список фитингов и список труб в нод (или скрипт) , в который вшита проверка IsConnectTo. (пока не знаю как это делается)
- ) проверяю расходы в трубах для тройников – больший расход – это ствол , меньшие это соотвественно ответвление и проход. Для последних двух проверяю угол между стволом , если 90 градусов – не учитываем в расчете длин (это ответвление), если 0 градусов то складываем (это проход)
- ) если фитинг отвод – то длину складываем …
Общие точки…я думаю есть общие координаты (то бишь точки) у коннекторов труб и фитингов….
Для труб получаем коннекторы так :
UnwrapElement(i).ConnectorManager.Connectors
Для фитингов пишет :
Как получить коннекторы у Family.Instance ?
Пока ход такой:
Решил получить пересечки двух списков Bounding.Box фитингов и тройников.
В итоге получаю список, который необходимо отсортировать на подсписки по принципу:
вначале идет фитинг, а затем трубы , которые к нему присоединяются. (итак каждый подлист)
Чтобы связать два списка (А=список фитингов, Б=список труб) вписал для “Б” Id пересекаемого элемента “А” (может это и лишнее и можно как то проще решить..). Дальше не получается отсортировать по ключу этого Id …. что пробовал и не получается закомментировано:
Ближе к истине в комментариях надо записать как то так(что тоже неверно):
Решение не очень – но не могу сделать компактнее скрипт (здесь код “Py.SortBySimilar” – не мое решение -взял тут из форума, но работает):
Py.Intersects_Pipes_Fittings
Py.SortBySimilar
Чет опять заглючило, ну дай ладно, моя на сегодня устала, всем добра
Если выбрать трубы и фитинги так:
то результат как на скрине выше – все ок
Если же выбрать так:
то результат неверный (в список попадают два фитинга..):
есть ли у коннекторов Id ? если да , то как их получить . когда получаешь коннекторы у труб и фитингов коннекторы через “get.connectors” то на выходе имеет только название, что это коннекторы. пытаюсь определить общие коннекторы у фитингов и труб
не мог выложить код в Pastebin_е )
оказывается нужно было немного подождать, после вставки ссылки))
Итак, если в трубах посчитаны расходы, то в пределах одной ветви можно найти самый длинный путь указанным выше скриптом
название выше выложенного скрипта “Py.Intersects_Pipes_Fittings_done” вот так работает в динамо:
Пример работы:
выбрали подающие трубы в пределах одной ветви:
Запустили скрипт, результат:
Пока буду искать ошибки…
Примечание:
1.) Нагрузка самого удаленного (последнего) отопительного прибора (а соответственно и автоматически рассчитываемой расход в трубе) должна быть хотя бы на 1 Вт больше нагрузки предпоследнего прибора.
2.) если вставляется арматура на трубопровод , то только таким образом, чтобы присоединяемые к ней трубы с двух сторон в свою очередь были присоединены к фитингам:
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.