Самый длинный путь

Главная Форумы Задать вопрос Самый длинный путь

Просмотр 15 сообщений - с 1 по 15 (из 16 всего)
  • Автор
    Сообщения
  • #6118 Score: 0
    txt
    Модератор
    86 pts

    Буду рад любым соображениям в решении задачи:

    Выбрал трубы и фитинги допустим по подающей линии ветви , скрипт просмотрел суммарные длины путей 0-1-2, 0-1-3-4, 0-1-3-5:

    И определил какой путь от открытого трубопровода до одного из трех радиаторов самый длинный:

     

    #6121 Score: 0
    ИваСерж
    Хранитель
    134 pts

    Это сложная задача. Та же задача у меня висит в списке, которые надо реализовать, уже год наверно. Я придумал использовать теорию графов. Моих программистских способностей на реализацию алгоритма поиска пути явно не хватит. Я решил поискать реализацию внешними библиотеками. Нашел несколько, которые можно использовать, но на этом забил, поскольку решил, что задача явно не для инженера-проектировщика а для уверенного программиста.
    Короче, это не любительский уровень скрипта. Если хотите разобраться – разбирайтесь самостоятельно, но потратите кучу времени. Либо обращайтесь к программистам с правильно поставленной задачей.

    #6139 Score: 0
    txt
    Модератор
    86 pts

    можно ли как то определить в списке фитингов , какие именно к этому фитингу присоединяются трубы ?

    #6144 Score: 0
    Евгений
    Участник
    1 pt

    По общим точкам. Есть у фитингов точки расположения?

    #6145 Score: 0
    txt
    Модератор
    86 pts

    Здесь на форуме было описано о методе IsConnectTo подскажите может кто знает или пользовался, или хотя бы ссыль с примером с инет… я искал…

    Пока мысли такие :

    1. ) я подаю список фитингов и список труб в нод (или скрипт) , в который вшита проверка IsConnectTo. (пока не знаю как это делается)
    2. ) проверяю расходы в трубах для тройников – больший расход – это ствол , меньшие это соотвественно ответвление и проход. Для последних двух проверяю угол между стволом , если 90 градусов – не учитываем в расчете длин (это ответвление), если 0 градусов то складываем (это проход)
    3. ) если фитинг отвод – то длину складываем …
    #6146 Score: 0
    txt
    Модератор
    86 pts

    Общие точки…я думаю есть общие координаты (то бишь точки) у коннекторов труб и фитингов….

    #6169 Score: 0
    txt
    Модератор
    86 pts

    Для труб получаем коннекторы так :

    UnwrapElement(i).ConnectorManager.Connectors

    Для фитингов пишет :

    Как получить коннекторы у Family.Instance ?

    #6172 Score: 0
    txt
    Модератор
    86 pts

    Пока ход такой:

    Решил получить пересечки двух списков Bounding.Box фитингов и тройников.

    В итоге получаю список, который необходимо отсортировать на подсписки по принципу:

    вначале идет фитинг, а затем трубы , которые к нему присоединяются. (итак каждый подлист)

    Чтобы связать два списка (А=список фитингов, Б=список труб) вписал для “Б” Id пересекаемого элемента “А” (может это и лишнее и можно как то проще решить..). Дальше не получается отсортировать по ключу этого Id …. что пробовал и не получается закомментировано:

    Ближе к истине в комментариях надо записать как то так(что тоже неверно):

    #6173 Score: 0
    txt
    Модератор
    86 pts

    Решение не очень – но не могу сделать компактнее скрипт (здесь  код “Py.SortBySimilar” – не мое решение -взял тут из форума, но работает):

    Py.Intersects_Pipes_Fittings

    Py.SortBySimilar

     

    #6174 Score: 0
    txt
    Модератор
    86 pts

    Чет опять заглючило, ну дай ладно, моя на сегодня устала, всем добра

    #6176 Score: 0
    txt
    Модератор
    86 pts

    Если выбрать трубы и фитинги так:

    то результат как на скрине выше – все ок

    Если же выбрать так:

    то результат неверный (в список попадают два фитинга..):

    #6178 Score: 0
    txt
    Модератор
    86 pts

    есть ли у коннекторов Id ? если да , то как их получить . когда получаешь коннекторы у труб и фитингов коннекторы через “get.connectors” то на выходе имеет только название, что это коннекторы. пытаюсь определить общие коннекторы у фитингов и труб

    #6209 Score: 0
    txt
    Модератор
    86 pts

    #6212 Score: 0
    txt
    Модератор
    86 pts

    не мог выложить код в Pastebin_е )

    оказывается нужно было немного подождать, после вставки ссылки))

    Итак, если в трубах посчитаны расходы, то в пределах одной ветви можно найти самый длинный путь указанным выше скриптом

    название выше выложенного скрипта  “Py.Intersects_Pipes_Fittings_done” вот так работает в динамо:

    Пример работы:

    выбрали подающие трубы в пределах одной ветви:

    Запустили скрипт, результат:

    Пока буду искать ошибки…

    #6214 Score: 0
    txt
    Модератор
    86 pts

    Примечание:

    1.) Нагрузка самого удаленного (последнего) отопительного прибора (а соответственно и автоматически рассчитываемой расход в трубе) должна быть хотя бы на 1 Вт больше нагрузки предпоследнего прибора.

    2.)  если вставляется арматура на трубопровод , то только таким образом, чтобы присоединяемые к ней трубы с двух сторон в свою очередь были присоединены к фитингам:

     

Просмотр 15 сообщений - с 1 по 15 (из 16 всего)
  • Для ответа в этой теме необходимо авторизоваться.