| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > План кабельных сетей - алгоритм автоматизации построения и программирование?

План кабельных сетей - алгоритм автоматизации построения и программирование?

Ответ
Поиск в этой теме
Непрочитано 20.09.2010, 11:59 4 | #1
План кабельных сетей - алгоритм автоматизации построения и программирование?
Frigate
 
КИП, АСУ ТП, слаботочка
 
Москва-Тюмень
Регистрация: 02.09.2010
Сообщений: 422

Добрый день, коллеги!


Программу ADV_Toolkit ver 1.1 вы можете скачать внизу этого сообщения.

Ниже я оставлю свой первоначальный первый пост. Даже самому интересно, как я вначале рассуждал, как шел к созданию уже вполне взрослой программы.

ПЕРВОНАЧАЛЬНЫЙ МОЙ ПОСТ===============================
Занимаюсь КИП и решил постепенно автоматизировать рутинные процессы проектирования.
Нужно: автоматизировать некоторые моменты создания плана кабельных сетей.
Дано: план эстакад, который берем у электриков. Таким образом, графическое представление плана трасс есть. На плане есть много позиций (блок-боксы, здания, площадки технологические), от которых кидаем кабель. ТО, что внутри площадок и блок-боксов нас пока не интересует - это делаем отдельными комплектами, попозиционно.
Итак, к примеру, от позиции 1 надо проложить 5 кабелей с маркировкой С1-1-1...С1-1-5 по уже имеющимся эстакадам (линиям).

Конкретика - что нужно получить в результате: щелкнуть в плане кабельных сетей на любой точке на линии, обозначающей трассы, и получить список (list) кабелей, проходящих через данную точку (табличку с номерами кабелей смогу и сам нарисовать, надеюсь :-) ). Для проверки нужна возможность включить отображение трассировки любого из кабелей, которые будут использоваться в проекте.

Отсюда и сам вопрос - как это можно реализовать? При помощи чего? Ну а потом уже буду пытаться это сделать, надеясь на вашу помощь.


Была сначала такая идея:
по имеющемуся плану кабельных сетей мышкой прощелкать все узлы (повороты, начало и конец) трассы, например, от позиции 1 до позиции 15 (в позиции 15 будет операторная, где стоят шкафы АСУ). Автокад должен запомнить трассу (напр., по указанным узловым точкам построить полилинию и ассоциировать ее с определенным номером кабеля (напр., С1-1-1), т.е она должна будет обозначать трассировку кабеля на плане.
Сначала хотел создать блок, напр. cable-trace с атрибутом - номером кабеля. В этот блок программно включить полилинию, обозначающую трассу. Но потом уже дошло :-) что полилиния, обозначающая трассировку кабеля С1-1-1 включится во все вхождения блока, а это уже мягко говоря не то ))). Вот и сижу пока в тупике, пытаюсь придумать другие варианты.

Буду рад идеям знающих

Сразу хочу сказать, что в "САПРе на базе Автокад" этого не нашел, хотя может плохо искал...

КОНЕЦ ПЕРВОНАЧАЛЬНОГО ПОСТА=========================================

ОБНОВЛЕНИЯ:

===============================
Выкладываю релиз 1.05 ADV_CAD

Версия 1.05. Изменения:

1) При импорте БД в схему внешних выводить инфу о недостающих кабелях один раз списком/ (было – предупредительным сообщение АВТОКАДа).
2) Поменял методику расчета длины трассы при создании и редактировании добавил более понятные комментарии при трансляции баз данных и установки длин.
3) Добавил более понятные комментарии при трансляции баз данных и установке длин кабелей (вывод имен файлов, с которых была произведена трансляция, вывод имен всех файлов, с которых транслирована информация о кабелях.
4) Сделал по кнопке проверку транслированной информации – доступна из любого чертежа, не только из плана трасс.

ДОПОЛНЕНИЕ:

- исправил неверную работу программы "Редактирование трассы кабеля": при входе в программу, но досрочном выходе из нее(по указанию <Выход из программы>), изменений в базу не вносилось (так и должно быть), но сама трасса удалялась из базы данных!

необходимо заменить в скачанном архиве файл
adv-programme-cable-routings-edit-one.fas
на новый, который находится в архиве
adv-programme-cable-routings-edit-one.rar

Релиз 1.10

Все практически сделано с нуля. Так что нет особого смысла описывать изменения.
Теперь в папке с программой ЕСТЬ HELP.
Просто скопируйте к себе на комп и распакуйте архив в корневой каталог диска C:.
В HELP есть описание дальнейшей установки, которое сводится (в самом простом варианте) к загрузка fas-модуля, выполняющего настройку AutoCADа.


ADV_Toolkit ver. 1.1

Изменений много.
Основное:
- автоматическая трассировка кабеля по указанным начальной и конечной точке. Более подробно - читайте в Хелпфайле в папке ADV_CAD_HELP (эту папку еще не переименовал, оказывается ). Важно: если у вас поменялась хоть как-нибудь трасса, то для корректной автотрассировки нужно нажать кнопку "Подготовить к трассировке" в диалоговом окне создания кабелей.
- создание кабелей при помощи диалогового окна. В будущем все программы будут переведены в режим диалога. Это преследовало целью уход от указания блоков кабеля на чертеже, а выбор из списка. ТОже немного подробнее читайте в хелпе.
- немного переделал блоки, теперь длина в блок кабеля вставляется сразу с суффиксом - ВНИМАНИЕ!!!
- на подкачке стоят программы из форума - перенумерация по renum, записная книжка - по NBOOK и NBOOK1 - вызов через комстроку.
- начал работу с БД изделий, пока сделал парочку кранов-вентилей (закладные конструкции) для КИПиА - по крайней мере там. где я работал, мы часто сами учитывали закладные, иногда - технологи.

Главное - хочется, чтобы вы потестили автотрассировку. Я ее гонял во всех режимах - было все ок. Но мало ли... Ну и сам диалог создания кабелей с кучей функций, сохранением настроек диалога на время сеанса - тоже стоило непало усилий.

В общем, жду конструктивной критики и пожеланий по тем моментам, что дополнил в программе

Дополнение - подредактировал программку создания трассы по аналогу. Скачайте лисп-файл и замените им такой же в папке с прогой. Теперь работает как надо! :-)

Дополнение от 21.04.2012:
добавил программку для массовой печати чертежей. Я о ней уже писал в теме, но сейчас выкладываю новую версию, где можно выбрать и самому указать стиль печати - монохром или акад (т.е. цветной) или свой стиль. Справка - в файле readme.txt

ПРограммка - в папке PRINT FORMATS, внутри папки ADV_Toolkit. Но - может работать без проги (сделана независимой).

Дополнение от 16.05.2013:

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

Вложения
Тип файла: rar ADV_Toolkit_ver.1.1.rar (2.39 Мб, 2585 просмотров)
Тип файла: lsp adv-programme-cable-routings-create-by-analogue.lsp (6.3 Кб, 1571 просмотров)
Тип файла: rar PRINT FORMATS.rar (6.1 Кб, 1157 просмотров)
Тип файла: rar PRINT FORMATS_dyn.rar (41.0 Кб, 816 просмотров)


Последний раз редактировалось Frigate, 16.05.2013 в 01:36.
Просмотров: 287918
 
Непрочитано 20.09.2010, 12:05
#2
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Может использовать вместо блока с атрибутом полилинию с расширенными данными?
Do$ вне форума  
 
Непрочитано 20.09.2010, 12:21
#3
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,091


в "САПРе на базе Автокад" прямо сказано, что авторы c электриками не дружат (или электрики с авторами )

посмотри темы от Shoorup'a и ElectriCS
kp+ вне форума  
 
Непрочитано 20.09.2010, 12:52
#4
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Сообщение от kp+ Посмотреть сообщение
в "САПРе на базе Автокад" прямо сказано, что авторы c электриками не дружат (или электрики с авторами )
Причем здесь электрики...

"Щелкнуть" по чему-то и получить информацию - типичная ГИС-технология. В ГИС-системах это "обязательная программа" и делается элементарно.

Кабели и любые другие виды коммуникаций - частные случаи. Планы трасс можно импортировать из AutoCAD.

Если главное - получение информации (например, для эксплуатации), то не надо использовать AutoCAD, хотя и для него есть ГИС-системы, хоть и отсталые.

Если же непременно надо в AutoCAD, то надо к полилиниям (или вообще любым объектам) привязывать расширенные данные. Лучше всего если сами данные хранятся в Базе Данных, а внутри чертежа только ссылки на них. Еще лучше, если и все координаты трасс хранятся в базе данных.

Блоки для таких целей - последнее дело. Хотя "кому и кобыла невеста" (С).

И понадобится разработка программ для создания информации с привязкой, просмотра и редактирования. И для всего прочего. Т.е. начать несколько лет конструировать велосипед, который, скорее всего, получится с треугольными колесами.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 20.09.2010, 13:06
#5
Frigate

КИП, АСУ ТП, слаботочка
 
Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422


kp+

оно и чувствуется, что очень грустно...

Есть конечно тупые способы решения моей задачи:
сделать блок из одной линии и атрибута, в который и будут записываться номера кабелей с разделителями... Написать функцию, чтобы добавить или вычесть из атрибута номера кабелей при схождении/расхождении трасс... Тоже, в общем то , вариант... Тогда в атрибуте блока будет переменная типа string. ТОлько вот ограничения по длине значения атрибута (string)- какие они

ShaggyDoc

понятно, что тут надо искать другие пути для решения задачи... Буду думать...

Последний раз редактировалось Frigate, 20.09.2010 в 13:15.
Frigate вне форума  
 
Непрочитано 20.09.2010, 13:47
#6
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Если же непременно надо в AutoCAD, то надо к полилиниям (или вообще любым объектам) привязывать расширенные данные.
Примеры
Автоматический подбор высоты текста с поста #27
Хэ-records
Список площадей выделенных полилиний в тектовое окно (файл)
Как сопоставить семантику и полилинию (полигон) в AutoCAD
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 20.09.2010, 14:17
#7
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


Цитата:
Кабели и любые другие виды коммуникаций - частные случаи. Планы трасс можно импортировать из AutoCAD.
ГИС вобщемно абсолютно такойже частный случай, только пошире))

Цитата:
Если же непременно надо в AutoCAD, то надо к полилиниям (или вообще любым объектам) привязывать расширенные данные. Лучше всего если сами данные хранятся в Базе Данных, а внутри чертежа только ссылки на них. Еще лучше, если и все координаты трасс хранятся в базе данных.
У электриков не настолько много доп. информации чтобы было целесообразно использовать внешние базы данных, темболее требуется ее всегда поддерживать в актуальном виде и легко и удобно редактировать... полилинии с xdata - неплохое решение, либо вообще отказаться от примитивов - "обозначителей" кабелей, хранить только трыссы и кабельный журнал в таблице, а когда нужна информация что где проходит выполнять трассировку.

Frigate
Я с переменным успехом пытаюсь делать программу перекрывающую потребности описаные в первом посте, посмотрите - http://shamangrad.net/project.php?act=view&prj=zcad (новую версию пока смотреть не стоит, только старую) и http://forum.dwg.ru/showthread.php?t=8707&page=2 начиная с 29 поста.
zamtmn вне форума  
 
Непрочитано 20.09.2010, 14:47
#8
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
У электриков не настолько много доп. информации чтобы было целесообразно использовать внешние базы данных, темболее требуется ее всегда поддерживать в актуальном виде и легко и удобно редактировать
Смотря у каких "электриков". Если электрик делает просто чертеж и желает привязывать информацию, чтобы просто не запутаться - это одно. Тут уж пущай мучается как хочет и может. Можно и xdata, можно и lsp-data. Хотя, с извращениями-то оно всегда интересней. А внешняя БД всегда пригодится. Хотя бы чтобы многочисленные наименования изделий каждый раз не вручную писать.

А вот если электрик, например, ведет дежурный план или схему электроснабжения завода, тут надо использовать другие решения.

Собственно автоматическая трассировка - третье. Заведомо тупиковое направление для реальных (не учебных) задач. Автоматически протрассировать линию не получится. А вот, как пишет автор, "прощелкать все узлы" трассы и по этим узлам нарисовать любую сеть - вполне реально. Хоть со всякими деталями, креплениями. Это действительное сокращение рутинных операций. Такие программы достаточно просто делаются.

Но саму трассу в этом случае намечает не "автомат", а человек.
ShaggyDoc вне форума  
 
Непрочитано 20.09.2010, 14:48
#9
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,091


Для начала неплохо посмотреть
http://forum.dwg.ru/showthread.php?t=14377

Опять же, ElectriCS не сбрасывать со счетов
kp+ вне форума  
 
Автор темы   Непрочитано 20.09.2010, 14:52
#10
Frigate

КИП, АСУ ТП, слаботочка
 
Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422


спасибо за советы... попробую почитать поразбираться в полилиниях с xdata на указанных примерах и справке... Наверное это будет хорошим решением...


VVA

спасибо за примеры

zamtmn

привет землякам

Про программу твою я раньше уже читал, правда мне нужно именно для Автокада - нужно ж ее еще и внедрить в отделе, а если и не получится внедрить, то хоть сам буду пользоваться, когда делаю проект "сети внутриплощадочные"

ладно, пока буду разбираться...


ShaggyDoc

попал в точку!

Цитата:
Если электрик делает просто чертеж и желает привязывать информацию, чтобы просто не запутаться - это одно
вот и мучаюсь )))

Просто надоело заполнять таблички-выноски с номерами проходящих в данном разрезе кабелей ))) Их же еще для красоты надо заполнять в порядке возрастания...


kp+

спасибо большое за ссылку!!! Мне кажется, там вполне то, что нужно, ну или хотя бы частично.

Последний раз редактировалось Frigate, 20.09.2010 в 15:17.
Frigate вне форума  
 
Непрочитано 20.09.2010, 15:16
#11
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


У меня есть свое решение.
1. Делаете динамический блок на все интересующие вас марки кабеля, типа того, что я сделал на трубы и тут даю.
2. Создаете на каждый тип кабеля свой слой "Кабель такой-то" и все линии и полилинии и сплайны и пр, что символизирует этот кабель рисуете в соответствующем слое.
3. Раскладываете по слоям копии своего динамического блока и настраиваете его на данный тип кабеля.
4. Пишете программу, которая делает следующее:
По выбранным кабелям определяет их слои, находит в них ваши динамические блоки (по имени), берет из них данные о кабеле и распечатывает таблицу с перечнем связей и параметрами материалов.
5. Можно наоборот, ткнуть в блок и получить данные о всех длинах линий в слое где этот блок лежит.

Вот такая вот метода.
Вложения
Тип файла: dwg
DWG 2004
Трубы стальные прямошовные.dwg (102.3 Кб, 11724 просмотров)
Supermax вне форума  
 
Непрочитано 20.09.2010, 15:27
#12
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


ShaggyDoc
Цитата:
Собственно автоматическая трассировка - третье. Заведомо тупиковое направление для реальных (не учебных) задач. Автоматически протрассировать линию не получится
Прекрасно получится, по нормальной, подготовленной "руками" трассе... Всё зависит от того что в данном случае удобнее - прочертить каждый кабель в отдельности или указать что с чем соединять (и в какой очередности если это необходимо). В идеальной программе нужно сочетать оба варианта.
Если информацию о соединении можно откуданибудь автоматом выдернуть - например из принципиальных схем - трассировка самое то

Frigate
Цитата:
привет землякам
аналогично - привет
Внедрять никуда не стоит - не доделано
zamtmn вне форума  
 
Непрочитано 20.09.2010, 17:58
#13
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Прекрасно получится, по нормальной, подготовленной "руками" трассе...
Это уже не трассировка, а рисование, о чем я и писал. А уж как именно рисовать "прочертить каждый кабель в отдельности или указать что с чем соединять" дело автора программы и рисовальщика.

Коли уж в начале упоминалась моя книга, там есть функция, которая подобным образом рисует что угодно - любые виды трасс. В аргументах ей передаётся "по-лисповски" имя функции рисования отдельного сегмента трассы.
ShaggyDoc вне форума  
 
Непрочитано 20.09.2010, 18:51
#14
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


>>Это уже не трассировка, а рисование, о чем я и писал. А уж как именно рисовать

Что тогда по вашему трассировка? большая красная кнопка? ручной работы всеравно не избежать - один раз прочертить трассу, затем автоматом по ней кучу кабелей - нормальный подход электроических сапр
zamtmn вне форума  
 
Непрочитано 20.09.2010, 22:05
#15
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Что тогда по вашему трассировка? большая красная кнопка?
Третий раз поясняю для непонятливых:

Трассировка - это выбор трассы любой коммуникации. Процесс творческий. Это - проектирование. Трассу надо наметить с учетом обстановки, конструкций, иных существующий и проектируемых сетей, норм и правил по размещению. Здесь человека ничем не заменить. Результат трассировки может быть в разном виде - как минимум, список координат точек вершин трассы. И трассу совсем не обязательно "прочертить". Координаты трассы можно и сохранить, например в базе данных, как я упоминал.

А вот "автоматом по ней кучу кабелей" - это простой, рутинный процесс. Работа для "чертежника". К САПР имеет мало отношения - это просто "малая механизация", но не Проектирование. Вот в ГИС это самое изображение трасс выполняется вообще автоматом, по координатам из базы данных. Причем рисование может быть в разных видах, в зависимости от задачи.

Впрочем, может быть в "электроических сапр" это и считается "нормальным подходом". Тогда мне жалко электриков...
ShaggyDoc вне форума  
 
Непрочитано 20.09.2010, 22:43
#16
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


Цитата:
Трассировка - это выбор трассы любой коммуникации. Процесс творческий. Это - проектирование. Трассу надо наметить с учетом обстановки, конструкций, иных существующий и проектируемых сетей, норм и правил по размещению. Здесь человека ничем не заменить. Результат трассировки может быть в разном виде - как минимум, список координат точек вершин трассы.
Трассировка - прокладка чего либо по каким либо законам. В данном случае законом выступает трасса прочерченная проектировщиком с учетом нормативов, способов прокладки и его творческих умозаключений. по этой трассе автоматически прокладываются кабели. кабелей может быть очень много, трасс и путей по ним не много. Как вы предлагаете это назвать если не трассировка кабелей?

Цитата:
И трассу совсем не обязательно "прочертить". Координаты трассы можно и сохранить, например в базе данных, как я упоминал
Вам так нравится БД? храните в ней всё что только можно, наздоровье... проектировщику больше понравится "прочертить", где и как это сохранится его не волнует (пока не начнутся проблемы с установкой этих дополнительных бд, фрейм ворков, хмл парсеров и иже с ними). ему нужно чтоб всё было визуально и удобно редактировалось. такчто сначала подумать, потом прочертить, потом легко изменить, а где хранить кроме програмистов никого не волнует

Цитата:
А вот "автоматом по ней кучу кабелей" - это простой, рутинный процесс. Работа для "чертежника". К САПР имеет мало отношения - это просто "малая механизация", но не Проектирование.
Ну да, однако эти вопросы на форуме возникают регулярно, а человеческого решения нет и наврятли будет... Я конечно незнаю, может вы держите в штате двух чертежников на одного Проектировщика ("моточасы" чертежников тоже стоят денег), но в подавляющем большинстве случаев это одно лицо. И такая "простая" работа отъедает у лица уйму премени...

Цитата:
Вот в ГИС это самое изображение трасс выполняется вообще автоматом, по координатам из базы данных. Причем рисование может быть в разных видах, в зависимости от задачи.
Блин, а электрики незнают... так бы все в этих ваших ГИС и работали. Чтобы чтото выполнить автоматом по координатам из базы данных нужно чтобы эти координаты туда ктото занес...

Цитата:
Впрочем, может быть в "электроических сапр" это и считается "нормальным подходом". Тогда мне жалко электриков...
Вы сначала посмотрите соответствующие продукты на рынке, а потом играйте словами. Подход придуман за долго до нас и других нет

Последний раз редактировалось zamtmn, 21.09.2010 в 00:06.
zamtmn вне форума  
 
Непрочитано 21.09.2010, 00:00
#17
Main Urod


 
Регистрация: 20.01.2009
Сообщений: 1,170


Цитата:
Сообщение от Frigate Посмотреть сообщение
Отсюда и сам вопрос - как это можно реализовать? При помощи чего? Ну а потом уже буду пытаться это сделать, надеясь на вашу помощь.
Сорри что влезаю не прочитав всей ветки дискуссии. Может то ч то я сейчас напишу уже сказали.
Я для решения схожей задачи (рисования проводников для схем электрических принципиальных) сделал ряд функций со следующими алгоритмами:
1. Рисование проводников. Программа сохраняет текущие данные (включенные параметры, слой и т.д.) отключает привязки, орторежим, включает рисование по сетке (специфика принципиалок) и слой проводников. Дальше идет диалог выбора назначения проводника (для твоего случая неактуален). После всего этого по щелчкам в выбранных точках рисуется полилиния соединяющая указанные точки (в моем случае еще и только вертикально или горизонтально. То есть если щелкнуть по диагонали, то рисуется сначала вертикальный отрезок, потом горизонтальный). После окончания рисования восстанавливаются сохраненные в начале параметры.
2. Сборка полилинии проводника. Полилиния формируется из уже нарисованных полилиний и отрезков. Просто щелкаешь на них и они добавляются. Похоже на команду join в редактировании полилиний, но с некоторым интеллектом. То есть точка начала и конца не обязательно совпадают. Программ или продолжает их до пересечения (если не пересекаются) или делает зигзаг до конечной точки если конечная точка одной из линий лежит на другой.
3. Редактирование данных. К выбранной полилинии цепляется последовательность расширенных данных в которой предусмотрено марка провода, сечение, цвет, обозначение. При редактировании выдается диалог в котором все это заполняется. При этом, при заполнении обозначения оно автоматически проставляется у всех концов полилинии.
4. Составление списка. По команде составляется список всех используемых проводов по маркировке, марке, сечению, цвету.
Сейчас планирую дописать функцию 1 до автоматической привязке к точке соединения с элементом схемы, функцию 3 до выбора марки проводника из вариантов хранящихся в текстовом файле, а не вбивания каждый раз вручную как сейчас, а функцию 4 до составления нормальной таблицы соединений.

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

Последний раз редактировалось Main Urod, 21.09.2010 в 00:13.
Main Urod вне форума  
 
Непрочитано 21.09.2010, 03:32
#18
Vlad®

розмысл
 
Регистрация: 12.06.2005
Иркутск
Сообщений: 1,973
<phrase 1=


А чем не устраивают готовые решения? отлаженные и сертифицированные?
Vlad® вне форума  
 
Автор темы   Непрочитано 21.09.2010, 08:43
#19
Frigate

КИП, АСУ ТП, слаботочка
 
Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422


Из предложенных вариантов и данных ссылок сделал след. вывод:

как и предлагал ShaggyDoc, я прощелкиваю все узлы трассы одного кабеля, скажем от поз. 1 до поз. 15. Потом надо, чтобы программа запрашивала, не нужно ли и другим кабелям присвоить эту же трассу (тем кабелям, что так же идут от поз. 1 до поз. 15). Эти узловые точки сохраняются в файле текстового формата. Так же делаю по кабелям от других позиций - прощелкиваю узлы этих трасс на плане сетей. И все эти трассы сохраняются в файле, скажем в таком формате:
"№ кабеля" т1 т2 т3 ... тN, где т1 - список с координатами 2D (к примеру). Пока не работал с данными из файлов, со строками - поэтому вопросы уточнений для написания программы будут попозже, если не разберусь сам.

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




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

Думаю, возможно ли осуществить это по следующему алгоритму:
1 указываем на плане точку pt1 (на нарисованной трассировке эстакады);
2 указываем по запросу программы точку pt2, от которой надо строить таблицу с номерами кабелей;
3 программа рисует первую по списку трассу из файла с хранящимися точками узлов: если трасса проходит через точку, то программа добавляет номер трассы в таблицу (не обязательно в объект Table, можно и просто МТекст в рамке 10х5 мм);
4 если трасса не проходит через эту точку, то программа строит след. трассу - см. п. 3.

И на этом все!

===========================================================================

Значит, нужны функции:

- функция №1а, которая получает номер кабеля и список точек-узлов трассы и запихивает все эти данные в строку, потом записывает эту строку в файл "D:\\Cable_traces.txt" (с затиранием пред. информации)
- Функция №1, которая считывает из файла с узлами трасс номер кабеля и список, состоящий из списков 2D координат точек-узлов (обратная функции №1а).
- Функция №2, которая по видимому, будет включать функцию №1: по списку узлов-точек строить полилинию и проверять, лежит ли точка с координатами точки pt1 (см. п.1) на нарисованной полилинии, если да - выполняется 3-я функция (вставка МТекста с номером кабеля с точкой вставки pt2 (см. п. 2). Начерченная полилиния трассы стирается.
- функция №3, которая получает аргументом номер кабеля и точку pt2, вставляет МТекст в рамке 10х5 мм у точки pt2, меняет координаты точки pt2 (чтобы след. МТекст с номером кабеля вставился, скажем, след. строкой, т.е. координата х pt2 равна (изначальная х - 5).


Прошу советов или возможно программ, реализующих функции №1а и №1.

С функцией №3 разобрался уже сам, просто надо было посмотреть в учебник по геометрии ))))) Принадлежность точки к прямой - это ж азбучная истина, класса 5-го наверное )))))

Вот и эта простенькая функция...

Код:
[Выделить все]
 
;|===============================================================================
Функция adv_point_belongs_to_segment определяет, принадлежит ли точка pt отрезку,
заданному координатами точек p1 и p2 (p1 и p2 - списки координат)
Вызов функции: (adv_point_belongs_to_segment pt p1 p2).
Возвращаемое значение - T (если принадлежит и nil, если нет|;
(defun adv_point_belongs_to_segment (pt p1 p2 / k c flag)
 (setq k 0 c 0 flag nil)
 (setq k (/(-(cadr p2) (cadr p1)) (-(car p2) (car p1))))
 (setq c (-(cadr p1) (* k (car p1))))
  (if (= (cadr pt) (+(* k (car pt)) C))
  (setq flag T)
  );_end of if
 (PRINC flag)
);_end of defun
Думаю, удастся обойтись без всяких расширенных данных и прочих сложностей...

Но все еще нужна помощь в написании функций 1а и 1 (см. выше)

Последний раз редактировалось Frigate, 21.09.2010 в 11:08. Причина: Дополнение (после подглядывания в учебник геометрии) :-)
Frigate вне форума  
 
Непрочитано 21.09.2010, 11:17
#20
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Frigate, вот это уже нормальный подход. Постановка задачи.
Советы:

1. Хранить в файле просто LISP-список. В виде, наподобие
Код:
[Выделить все]
'( "№ кабеля" '( '( X1 Y1 Z1)...'(Xn Yn Zn)))
Этот список легко прочитать штатными функциями (read, eval) и сразу присвоить переменным. В файл он будет писаться в виде строки или строк.
Вообще-то всю топологию трассы очень удобно описать в виде XML, но это потребует много дополнительного программирования. Зато можно и визуально редактировать, и использовать в любых программах.

2. Зачем строить полилинию, которая сразу будет стираться? Проверить, лежит ли точка на сегменте линии можно аналитически. Вот так, например:
Код:
[Выделить все]
(defun ru-geom-is-point-in-line (t1 t2 tx)
  ;;Точка внутри отрезка? 
  (equal (+ (distance tx t1) (distance tx t2))
	 (distance t1 t2)
	 1e-6
  )
)
Всё остальное -"дело техническое".
ShaggyDoc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > План кабельных сетей - алгоритм автоматизации построения и программирование?

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Посоветуйте программу для построения профилей наружных сетей? dextron3 Вертикальные решения на базе AutoCAD 18 11.03.2012 16:37
Сводный план сетей proekt_mep Инженерные сети 42 16.06.2011 23:09
Ищу книгу "Проектирование кабельных сетей и проводок" под редакцией Г.Е.Храпченко 1980 Инзиля Поиск литературы, чертежей, моделей и прочих материалов 8 03.02.2009 14:47