I love Ukraine

Расчет кабельного журнала из файла Excel


описание алгоритма

Исходные данные: есть кабельный журнал в виде файла Excel. Он может появиться бог знает откуда, например переданный смежниками, или старые какие-то кабельные журналы и т.д. Вариантов много. Но задача одна - нужно вычислить длины. И выхода два: терпеливо поштучно, "с циркулем в руках", отмерять по плану первичников/строителей/геодезистов длины участков и из них вычислять длины кабелей, или как-то автоматизировать этот процесс.

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

Видео, как это работает выложено в ютуб-канале, ссылка тут


Внешний вид панельки: 


Описание кнопок управления столбцами:

Первая колонка - поля в которых указан номер столбца для выбора имени кабеля. При анализе таблицы Excel из столбца с этим номером буду выбираться имена кабелей.


Вторая колонка - кнопки выбора столбца. В таблице Excel нужно выделить ячейку с заголовком и нажать кнопку. Из ячейки будет извлечен номер столбца и текст заголовка. 


Третья колонка - поля с заголовками столбцов. Поле редактируется. Используется для поиска нужного столбца.


Четвертая колонка - кнопки поиска ячейки с заданным названием столбца. При нажатии будет произведен поиск по всему листу. Если ячейка будет найдена, то номер её столбца будет занесен в соответствующее поле номера столбца.


Описание алгоритма:

Весь процесс состоит из трех шагов: подготовка временного проекта, "причесывание" экселевского файла и собственно сам перегон.

Первый шаг - подготовка временного проекта. Для того что бы использовать AutoCAD Electrical для расчета длин кабелей нужно создать простой временный проект из двух листиков чертежей. Почему именно два? Фишка АЭ - когда в проекте всего один лист, АЭ не вносит в базу данных проекта информацию. Увы. И моей программе нечего считывать. А посему я обычно делаю два листа - один схема, второй расчетный план в масштабе 1:1. Просто, дешево и сердито.

Второй шаг - "причесывание" файла Excel с перечнем кабелей. Те, кто создавали файл Excel, ни сном ни духом не ведали что их файл  будет использован "не по назначению". А посему расположение и наполнение колонок будет у каждого по своему. Для того что бы программа знала что и где искать - нужно привести этот файл к нормализованному виду и рассказать про это программе.

Для создания схемы подключения кабеля нужны 4 колонки: "Марка кабеля", "Тип кабеля", "Шкаф откуда", "Шкаф куда".

Содержимое первой и второй колонки считываются как есть. Колонки шкафов должны содержать в одной строке два значения: название зоны и название шкафа. То есть содержимое Inst и Loc. В ячейке они разделяются символом разделителем. По умолчанию используется знак равно. При необходимости можно установить свой собственный символ, в соответствующем поле.

Положение колонок этих колонок - произвольное. Главное указать где искать, номер колонки.

В результате должно получится что-то вроде такого:


Третий шаг - запуск на исполнение.

К этому моменту запущен Автокад, создан любой активный чертеж и список кабелей в Excel подготовлен ("причёсан"). 

Нажимаем на большую кнопку в левом верхнем углу окна и ждем результата. 

Программа по очереди перебирает все строки активного листа Excel. От первой и до последней. В каждой строчке ищет ячейки с маркой кабеля, его типом и обозначения "откуда" и "куда". Проверка каждой строки может закончится или принятием данных или отбрасыванием из-за некорректных данных. Если хотя бы одна ячейка из четырех пустая, значит нет необходимых данных и строка будет отброшена.

Количество строк для обработки запрашивается у Excel. И тут есть нюанс - иногда Excel говорит что заполнены данными все! ячейки, которых овер дофига, и программа вынуждена проверять каждую строчку. Это может затянутся надолго - минуты или десятки минут. Однако когда закончится считывание и формирование списка кабелей, начнется рисование кабелей на листе. Это гораздо быстрее.

Во время процесса руками Excel и AutoCAD Electrical лучше не трогать, нужно дождаться окончания обработки.

После считывания данных из таблицы Excel, по ним строится принципиальная схема в активном листе Автокад.


Результат будет выглядеть так:



Слева используется универсальный блок обозначения шкафа с двумя точками подключения, "двусторонний". Справа используются два блока односторонние, "левый" и "правый". 

Универсальные блоки:

Односторонние блоки:


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

Created with the Personal Edition of HelpNDoc: Enhance Your Documentation with HelpNDoc's Advanced Project Analyzer