|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Как можно реализовать автоматическую прокладку кабеля по заданным трассам?
Регистрация: 16.10.2013
Сообщений: 394
|
||
Просмотров: 2293
|
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,153
|
Когда-то видел научные статьи лохматых годов на эту тему, надеюсь, их еще можно найти. Там все было серьезно, с графами, оценками оптимальности, и т.п.
А вы для себ какую задачу ставите? Просто прокладывать кабели хоть как-нибудь, или с учетом всяких ограничений, заполняемости трасс, минимизации длины и т.п.? Готовые проги типа CS Кабельное хозяйство не рассматриваете? Последний раз редактировалось kp+, 16.12.2024 в 12:23. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
чтобы что-то проложить автоматически - сначала надо будет задать кучу параметров-ограничений... по сути создать информационную модель. Это мечта менеджеров - нажал кнопку и все само до сдачи заказчику. Реально в "одно лицо" (насколько понимаю) можно создать ассистентов-помощников, которые будут считать, проверять, маркировать и т.д. Но прокладку самих трасс оставьте живым людям)
|
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
кабели не просто так раскидываются - а к оборудованию (и между оборудованием). И далеко не всегда все оборудование известно сразу (пока из смежников "вытрясешь" ТЗ), не говоря уже об постоянных правках-корректировках. А потом еще корректировки во время монтажа - а автораскладка (если как-то не "заморозить" уже сделанное) взяла и переложила кабели - как ей показалось оптимальнее на данный момент. Поэтому не существует каких-то общепризнанных лидеров среди ПО в области полностью автоматического проектирования - хотя крупные разработчики ПО явно могут себе позволить всех нужных специалистов для реализации.
|
|||
![]() |
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,153
|
Цитата:
Возможно, стоит скачать демы уже разработанных комплексов вроде вышеупомянутого, чтобы понять, что они могут, что нет, и как это подходит именно вам. И чего не хватает именно вам. Чтоб если изобретать велосипед, то хотя бы не самый уродливый... PS а пользоваться программой будете вы один или как? Потому что если коллеги скажут "нам этого не надо, и указаний от начальства не было", а начальству надо и того меньше - то нет повести печальнее на свете ... PPS на форуме уже есть один стартап по прокладке кабелей. Смотрели? https://forum.dwg.ru/showthread.php?...E1%E5%EB%E5%E9 Последний раз редактировалось kp+, 16.12.2024 в 14:54. |
|||
![]() |
|
||||
Регистрация: 16.10.2013
Сообщений: 394
|
Существующие проги, в частности CS Кабельное хозяйство, довольно громоздкие. Там реализован функционал оценки заполняемости лотка при выборе трассы, взаиморезервирование кабелей и прочие тонкие моменты. Для реализации моих целей получается из пушки по воробьям. У меня (пока) все проще: есть пара десятков кабелей, есть штук шесть-семь ветвящихся трасс (иногда с кольцом). Надо автоматизировать процесс раскидывания этих кабелей.
PS пользоваться буду я, соответственно все ограничения, накладываемые на программу, буду держать в голове. Скорее всего потом программа будет разрастаться, но надо хоть от чего-то оттолкнуться, пока с этим засада. |
|||
![]() |
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,153
|
Цитата:
Цитата:
https://forum.dwg.ru/showthread.php?...E1%E5%EB%E5%E9 |
|||
![]() |
|
||||
Регистрация: 16.10.2013
Сообщений: 394
|
смотрел, есть еще похожая тема
https://forum.dwg.ru/showthread.php?t=57484 но в ней автор давно пропал в первой теме автоматической раскладки вроде бы нет, во второй теме есть какое-то начальное описание алгоритма в хэлпе, но пока не сильно понятнее становится. вот ищу поддержки тут. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
обычно автоматизация разрабатывается с совершенно противоположной целью - держать не всю информацию в голове, а только текущие оперативные данные в краткосрочной памяти (и общее понимание - что вообще нужно сделать по объекту, естественно).
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,704
|
Насколько я понимаю, тут нужно обратиться к расчету строительных сетевых графиков, только вместо продолжительности работ тут будет длина участка трассы.
Через расчет можно найти критический путь, который и будет требуемым маршрутом прокладки кабеля. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
ну и возможный ассистент - рисуется полилиния-кабель от оконечного оборудования до групповой прокладки кабелей (ГПК), затем дается команда типа "по существующему кабелю" и выбирается эта ГПК. Если кабелей в ГПК несколько - диалог выбора нужного кабеля и по трассе выбранного кабеля автоматически создается кабель до нужного щита (так как построение нового кабеля идет просто поверх выбранного кабеля в ГП, то пройдет и по тем же стоякам). Ну и при этом фиксировать информацию о соединениях для последующего построения КЖ. Это в реализации гораздо проще автораскладки)
|
|||
![]() |
|
||||
Регистрация: 16.10.2013
Сообщений: 394
|
Поиск в интернете и советы форумчан навели на тему графов, поэтому пока работаю в эту сторону. Есть непонятки с построением графа.
Думаю, отдельную тему создавать не стоит, спрошу здесь. Народ, подскажите алгоритм или логику, чтобы граф из прилагаемой картинки представить в виде матрицы или двумерного массива, где по вертикали и по горизонтали отложены вершины от 1 до 5 соответственно, а на пересечении вершин вставлены длины между этими точками, если между точками связи нет, нужно проставить ноль. матрица будет такая: ...1 2 3 4 5 1 010 0 0 0 210 0 7 5 0 3 0 7 0 0 9 4 0 5 0 0 0 5 0 0 9 0 0 на картинке соответственно в кружке показан номер узла, он соответствует вертикальным и горизонтальным столбцам матрицы, зеленым - длина ребра, проставляется в матрицу на пересечении соответствующих узлов, синим показано наличие ребер между узлами. Список отрезков, соответствующих ребрам, я получу, координаты вершин тоже получу, а вот как передать это все в массив - не представлю. Расскажите логику или алгоритм. Нумерация вершин не принципиальна, привел просто для наглядности. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Для вашего частного случая алгоритм:
1. Помещаем любой (например, №4) из узлов с одиночным ребром в стек и в список посещенных. 2. Извлекаем узел №4 со стека. Ищем все узлы, связанные ребрами с узлом №4 и которые при этом нет в списке посещенных - это будет узел №2. 3. Заносим узел №2 в стек и в список посещенных. 4. Извлекаем узел №2 со стека, ищем по ребрам еще не посещенные узлы - это будут №1 и №3. Заносим эти узлы в стек и в список посещенных. 5. Извлекаем узел №1 из стека - а у него в соседях по ребрам нет не посещённых узлов. Поэтому на этом шаге в стек ничего не уходит. 6. Извлекаем узел №3 из стека - у него в соседях остался только узел №5, который и отправиться в стек и список посещенных. 7. Извлекаем узел №5 из стека - и опять него в соседях по ребрам нет не посещённых узлов. Поэтому на этом шаге в стек ничего не уходит. 8. Стек пуст - все узлы графа пройдены. При этом в списке посещенных будет 4-2-1-3-5. 9. Анализируем узлы графа - кто имеет только одно ребро: №4, №1 и №5. Теперь берем полученную ранее последовательность: 4-2-1-3-5 первая ветка 4-2-1 вторая ветка 4-2-(1 пропускаем, так как одно ребро)-3-5 ну а посчитать длины этих веток уже не проблема. это не тема, это на целый раздел тянет минимум, имхо ![]() |
|||
![]() |
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,153
|
Вы на каком языке будете писать? Если на лиспе, то вот хороший пример работы с матрицами:
https://www.lee-mac.com/matrixtransf...functions.html |
|||
![]() |
|
||||
Регистрация: 11.10.2011
Сообщений: 27
|
Это вариации на тему алгоритма Дейкстры. Поиск кратчайшего пути в графе. Задаются точки и ребра с весами (длинами) между ними. Строится оптимальный путь от и до. Даже для вба есть реализация этого алгоритма на сайтах посвященных экселю. Задача сводится к формированию массива ребер из объектов акада. И оптимизации вызовов алгоритма, не для каждой пары точек, а, скажем, для одного родительского узла и всех дочерних. Ну и рисования трасс в конце по результатам работы
|
|||
![]() |
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,153
|
Цитата:
https://github.com/tsao100/Shortest-Path |
|||
![]() |
|
||||
Регистрация: 16.10.2013
Сообщений: 394
|
Почему-то не приходили уведомления на почту, а я сам ушел с головой в ВБА, и сообщения не сразу увидел. Спасибо всем отписавшимся.
Именно алгоритм Дейкстры прикручиваю к своей задаче. На форуме по экселю подсказали и реализацию при переводе графа в программный вид. Сейчас проблема возникла такая (хотя, наверное, это уже отдельная тема должна быть): написал код создания и вставки блока. Если имя не менять, но менять содержимое блока, то в модели появляются разные блоки с одинаковыми именами. Как такое может вообще быть? Нашел обрывочное полу-объяснение, что это какая-то ошибка автокада, и она вроде даже не критическая. Расскажите подробнее, почему вставляются два разных блока с одинаковыми именами? (написать код с проверкой наличия блоков с одинаковыми именами перед вставкой не прошу, мне просто непонятно, как так получается) ПС код приводить скорее всего смысла особого нет, дело точно не в коде, но на всякий случай: Код:
Последний раз редактировалось posetitel, 25.12.2024 в 16:38. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Возможно ли выцепить текст у таблиц? Как это можно реализовать на AutoLISP? | lexluther | LISP | 15 | 19.03.2018 21:38 |
Можно ли моделировать Основания и Фундаменты в Лире САПР? | Алексей_rus | Лира / Лира-САПР | 2 | 09.12.2014 12:48 |
Можно ли к ПГ подключить автоматическую систему пожаротушения? | dextron3 | Инженерные сети | 3 | 17.04.2010 18:30 |
Можно ли такое реализовать в AutoCAD 2010? | Shoorup | Программирование | 7 | 03.05.2009 23:33 |