Программы

Программа cable_magazine

Назначение программы является обсчет трасс и формирование кабельного журнала. Для использования программы должны быть соблюдены следующие правила отрисовки трасс.
Принятые условия:
а) Трасса в виде полилиний размечается на слое Pr_Track
б) Объекты (здания/сооружения) которые будут отрисовываться на отдельном листе, помечаются блоком Object на слое Pr_Obj
в) УГО – изменение высоты на трассе показываются блоком Vertical_wiring_v2 на слое Pr_UGO
г) Элементы, между которыми надо узнать расстояние по трассе показываются блоком Boxes и AK_device (будут добавлены другие) на слое Pr_Equipment
д) Максимальное количество отдельных линий между элементами может быть 3 шт (для наглядности линии выделены разным цветом). Например, путь K01-TT04. Если связь между элементами будет состоять более 3 линий – она не будет найдена!
Рекомендуется использовать максимально две линии. Например, пути: ABK01-K01, K01-TT02, K01-TT03.
Обязательным условием является пересечение линий (рекомендуется использовать параметризацию).
В версии cable_magazine_v14_07_15 предусмотрен выбор только одного масштаба трасс.
Т.е. например 1:500 (генплан) и 1:50 (здания) нужно считать отдельно.

Примеры.
Пример для кабельного журнала
Пример для кабельного журнала



Программа ищет все доступные пути!
Например:
Пример 1
Пример 1


(K01 12.0746 TT03 ДВЕ_ЛИНИИ) – путь из желтой и красной линии
(K01 10.6182 TT03 ТРИ_ЛИНИИ) – желтая фиолетовая красная
(K01 17.9449 TT04 ТРИ_ЛИНИИ) – зеленая желтая красная. Здесь фиолетовая линия является четверной линией, поэтому она не учитывалась.
Еще примеры:
Пример 2
Пример 2


Программа выдаст ошибку: желтая линия пересекается фиолетовой два раза – это не допустимо!
Пример 3
Пример 3


Будут найдены пути:
(K01 10.3098 TT03 ДВЕ_ЛИНИИ) – путь из желтой и красной линии
(K01 9.90485 TT03 ТРИ_ЛИНИИ) – желтая, фиолетовая и красная
(K01 16.1801 TT04 ТРИ_ЛИНИИ) – зеленая, желтая и красная линии
(K01 15.5265 TT04 ТРИ_ЛИНИИ) - лишние участи фиолетовой лини не учитываются.

Запуск программы.
После загрузки программы нужно вызвать функцию cable_magazine. Если все правильно оформленно, то программа найдет пути и расстояния между ними.
Результат работы программы доступен в виде сообщения в командной строке AutoCAD:
найденные пути автоматически или из файла,
промежуточные данные,
промежуточные данные,
результат.

((TT01 K01) (TT02 K01) (TT03 K01) (TT04 K01) (TT05 K03) (TT06 K03) (TT08 K02) (TT07 K02) (K01 ABK01) (K03 K02) (K02 ABK01))

(((8 (FINISH -163.513 312.433 0.0))) ((9 (FINISH -152.014 307.93 0.0)) (8 (BEGIN -155.014 307.93 0.0))) ((7 (FINISH -167.046 307.93 0.0))) ((9 (FINISH -152.014 307.93 0.0)) (8 (BEGIN -155.014 307.93 0.0))) ((6 (FINISH -163.27 304.111 0.0))) ((9 (FINISH -152.014 307.93 0.0)) (8 (BEGIN -155.014 307.93 0.0))) ((5 (FINISH -165.757 300.728 0.0))) ((9 (FINISH -152.014 307.93 0.0)) (8 (BEGIN -155.014 307.93 0.0))) ((1 (FINISH -184.035 206.559 0.0))) ((3 (FINISH -169.944 202.645 0.0)) (1 (BEGIN -172.944 202.645 0.0))) ((0 (FINISH -183.336 203.037 0.0))) ((3 (FINISH -169.944 202.645 0.0)) (1 (BEGIN -172.944 202.645 0.0))) ((2 (FINISH -138.751 195.907 0.0))) ((10 (BEGIN -159.535 213.992 0.0)) (4 (BEGIN -159.535 210.992 0.0))) ((4 (FINISH -159.535 191.229 0.0))) ((10 (BEGIN -159.535 213.992 0.0)) (4 (BEGIN -159.535 210.992 0.0))) ((9 (FINISH -152.014 307.93 0.0)) (8 (BEGIN -155.014 307.93 0.0))) ((10 (FINISH -60.7389 323.985 0.0))) ((3 (FINISH -169.944 202.645 0.0)) (1 (BEGIN -172.944 202.645 0.0))) ((10 (BEGIN -159.535 213.992 0.0)) (4 (BEGIN -159.535 210.992 0.0))) ((10 (BEGIN -159.535 213.992 0.0)) (4 (BEGIN -159.535 210.992 0.0))) ((10 (FINISH -60.7389 323.985 0.0))))

(((1 (-180.066 202.645 0.0))) ((0 (-180.066 202.645 0.0))) ((4 (-159.535 197.87 0.0))) ((4 (-159.535 202.645 0.0))) ((3 (-159.535 202.645 0.0)) (2 (-159.535 197.87 0.0))) ((6 (-161.691 304.111 0.0))) ((8 (-158.825 307.93 0.0)) (7 (-158.825 307.93 0.0)) (5 (-161.691 304.111 0.0))) ((8 (-158.825 307.93 0.0)) (6 (-158.825 307.93 0.0))) ((7 (-158.825 307.93 0.0)) (6 (-158.825 307.93 0.0))) ((10 (-100.052 290.85 0.0))) ((9 (-100.052 290.85 0.0))))
((TT01 13.0012 K01 ОДНА_ЛИНИЯ) (TT02 12.0316 K01 ДВЕ_ЛИНИИ) (TT03 12.0746 K01 ДВЕ_ЛИНИИ) (TT04 17.9449 K01 ТРИ_ЛИНИИ) (TT05 15.0047 K03 ОДНА_ЛИНИЯ) (TT06 10.4153 K03 ДВЕ_ЛИНИИ) (TT08 38.4774 K02 ДВЕ_ЛИНИИ) (TT07 19.7623 K02 ОДНА_ЛИНИЯ) (K01 141.49 ABK01 ДВЕ_ЛИНИИ) (K03 18.7562 K02 ДВЕ_ЛИНИИ) (K02 208.789 ABK01 ОДНА_ЛИНИЯ))nil

Доступен ручной ввод путей. Для этого в корне файла чертежа нужно создать link.txt и внести в него пути по примеру:
Пример 4
Пример 4


Каждая связь должна начинаться с новой строки. Название объекта/блока заключается в кавычки. Разделитель между объектами является пробел. Лишних пробелов быть не должно.
Возможность поиска дополнительных путей к найденным автоматически так же есть. Для этого надо: найти все пути автоматически, скопировать все найденные пути в link.txt при этом можно удалить не нужные и добавить свои пути по описанным правилам выше, и запустить программу заново.
Если программа выдает ошибку или результат работы будет отличаться от описанного выше, то где-то допущена ошибка.
Возможные варианты ошибок:
а) Значения атрибутов в объектах/блоках и link.txt на разных языках
б) в link.txt пути прописаны не верно
в) нет такого трассы
г) трасса больше чем три линии
д) нет пересечений между линиями

Ограничения отрисовки путей
Пример 5
Пример 5


Из-за особенности AutoCAD линии связей должны быть не дальше 1.8мм от точки вставки блока. Не должны совпадать с точкой вставки (н-р синея линия – так делать нельзя!).
В случае зеленой и желтой линии, зеленая линия попадает в радиус поиска линий для блока TT03. Программа найдет неверные связи и дальше выдаст неверные пути. В этом примере будет найден дополнительный неверный путь и длина соответственно от K01 до ТТ03 : сегмент красной линии + сегмент желтой линии до пересечения с зеленой при этом путь запишется как ТРИ_ЛИНИИ.
На данном этапе разработки программы приемлемо использовать любые свои блоки с выполнением описанных выше требований и условием, что в блоке будет присутствовать атрибут NAME –это название прибора/элемента (н-р ТТ02, К01 и др.) на первой позиции в списке атрибутов.
На четвертой позиции появится атрибут LINK (н-р со значением ТТ01). Т.е. связь будет определена как ТТ01-К01.
Пример 6
Пример 6


Это заметно ускорит процесс и сократит ошибки, но появятся дополнительные требования и внимательности со стороны пользователя.



Изменения:
Добавлены атрибуты:
Пример 7
Пример 7


Последовательность атрибутов должна быть всегда такая! (при создании собственных блоков УГО).
где:
название блока (от куда)
тип (не используется)
параметр (не используется)
высотная отметка прибора (не используется)
место установки (не используется)
название блока1 (до куда)
кабель
клеммы (номер клеммы куда придет кабель) (не используется)
----------------------------------
название блока (до куда)
сигнальный кабель1
клеммы сигнального кабеля1 (номер клеммы куда придет кабель) (не используется)
----------------------------------
название блока (до куда)
сигнальный кабель2
клеммы сигнального кабеля2 (номер клеммы куда придет кабель) (не используется)
----------------------------------
название блока (до куда)
питающий кабель1
клеммы сигнального кабеля1 (номер клеммы куда придет кабель) (не используется)
----------------------------------
название блока (до куда)
питающий кабель2
клеммы питающего кабеля2(номер клеммы куда придет кабель) (не используется)
Примечание: блоки можно создавать свои, но название и порядок атрибутов должны совпадать с предложенными. Любой блок можно использовать не по назначению его УГО! В блоках обозначающих здания (т.е. планируется добавить подробный(е) план(ы)) все атрибуты кроме NAME должны быть пустыми!

В местоположении файла чертежа создаются текстовые файлы:
Пример 8
Пример 8


где:
link_0 – список связей для cable
link_signal_1 – список связей для cable_signal_1
link_signal_2 – список связей для cable_signal_2
link_power_1 – список связей для cable_ power _1
link_power_2 – список связей для cable_ power _2
link_ALL – суммарный список всех перечисленных выше связей.
cable_magazine – список link_ALL с длиной кабеля
specification – список просуммированных однотипных кабелей
Примечание: при повторном запуске программы списки заменяются на новые.

Внимание! После отрисовки трасс и расстановки блоков необходимо обнулить их координаты Z

Пример с блоками: (выбрать блок > выбрать подобное > свойства > Положение Z). Если значение «Различные» - Z надо обнулять
Пример 9
Пример 9


Пример с линиями: Обнулять нужно два свойства
Пример 10
Пример 10





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


v07_08_15
а) Добавлена возможность подсчета перехода высот с углом
При угле 90 (по умолчанию) считается разница высот (катет а).
При угле не 90 считается гипотенуза (c) за вычетом катета b.
Функция добавлена для дальнейшего подсчета лотков.
б) создан блок Vertical_wiring_v3, он должен находиться в слое Pr_UGO_with_to.
Примечание: отсутствие этого блока не позволит отработать программе (ждем следующую версию). в) блоков может быть сколько угодно.
г) блок должен находиться на нужной линии или на удалении (от точки вставки) не более 1мм.
д) блок может находиться на пересечении линий.
е) блок не может находиться на конечной точке со стороны прибора (надо смещать дальше по линии - иначе он не будет посчитан)
ж) длины считаются с учетом этих блоков
Пример 11
Пример 11


Примечание: высоты приборов не учитываются! (ждем следующую версию)

v10_08_15
а) добавлена возможность отсутствия блоков Vertical_wiring_v3
б) учитывается высота приборов и оборудования
Примечание: при отсутствии высоты берется высота эстакады.
В следующей версии указании высоты «On-line».
в) добавлен ввод высоты эстакады

v11_08_15
а) добавлена функция указания высоты у оборудования.
Примечание: высота в зданиях означает высоту ввода кабельной продукции в здание. Все еще остается недоработки блока зданий/сооружений (обрабатывается при помощи других блоков)
б) округление длины до целого значения

v17_08_15
Устранена ошибка из-за недоработки блока зданий/сооружений.

v18_08_15
Добавлена «заплатка» вместо v17.08.15

v19_08_15

Добавленная функция вычисления кабельной продукции для формирования выносок.
v22_08_15
Добавленная функция формирования дополнительного списка для расстановки выносок. Список формируется из названия приборов NAME-##, где ## сквозной порядковый номер кабеля у прибора (от сигнальных до питающий).
Если высота прибора не указана, то производиться запрос указания высоты «On-line». Допустимо указывать «0» или 0.000.
Обрабатываются и учитываются значения -x.xxx(ниже нуля) и +x.xxx(выше нуля).
Примечание: в значении высоты должна стоять точка, а не запятая.

v02_09_15
Доделан блок обозначения зданий/объектов которые выносятся на отдельный лист чертежа. См. БД блоков.dwg
Атрибуты сохранились те же как и у приборов.




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


Еще на шаг ближе. Видео заполнения кабельного журнала


Разработка новой версии

Задача Статус
1. Проработать методы поиска путей завершено
2. Кодинг завершено
3. Предварительные испытания завершено
4. Опытная эусплуатация завершено
5. Приемочные испытания отрицательно
 80%

Тэги: AutoLISP

Комментарии   

0 #2 tujn08 13.01.2017 13:50
Цитирую AutoSystems:
А как можно воспользоваться вашей программой?


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

Как будет рабочий вариант опубликуем.
Спасибо за интерес!!!
Цитировать
0 #1 AutoSystems 13.01.2017 13:30
А как можно воспользоваться вашей программой?
Цитировать

Добавить комментарий

Администратор оставляет за собой право удалять любой комментарий без разъяснения.


Защитный код
Обновить