|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
КИП, АСУ ТП, слаботочка Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422
|
Получилось сделать автотрассировку. ПОка еще все в рабочем и отладочном виде.
Немного усложнило работу момент хранения VLA-OBJECT. VLA-OBJECT я храню в атрибуте. А в нем как известно тип данных String. После чтения данных (read) получаю список примерно такого вида (VLA-OBJECT: AcadBlockRef ххх). Указатель пропадает. Если через вариант действовать, то тоже нге получается. Пришлось хранить вместо VLA-OBJECT хендлы вершин графов. Сам же граф, как вы и догадались наверняка, представлен в виде временно создаваемых блоков вершин графа. Дооформлю все, тогда выложу. А то пока отладочный вид у чертежа и у блоков ))) Последний раз редактировалось Frigate, 12.11.2010 в 19:39. |
|||
|
||||
КИП, АСУ ТП, слаботочка Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422
|
zamtmn,
не спеши ))) блоки ставятся автоматом в точках соединения линий. Потом они удалятся. Это упрощает саму программу и уменьшает количество переменных до 3-4 ))) Некоторые из блоков не будут удаляться - те, которые обозначаютпозицию датчика или здания, в которое кабель идет. Передвинул блок в случае изменения эстакад - и уже нее надо второй раз обозначать, откуда и куда идет данные кабель. Все будет автоматом. К тому же, так мы за один проход получаем почти все нужные нам длины Начальную точку берме в операторной, куда почти все кабели и сходятся. И сразу получаем все длины за одно прохождение по всем вершинам. а пользователь только и делает, что рисует отрезками линию трассы. Последний раз редактировалось Frigate, 12.11.2010 в 21:40. Причина: а пользователь только и делает, что рисует отрезками линию трассы. |
|||
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
|
Вообще, вставка графических объектов штука по трудоемкости не сравнимая с экономией нескольких переменных... смысл такой "экономии" мне не понятен, и ничего кроме лишних тормозов не даст. Блоки должны быть - шкафы, датчики и т.п. и они не временные, их вставляет и передвигает пользователь
Никаких начаьных точек тоже выделять не стоит - сегодня одна операторская, а завтра их десять на одной площадке |
|||
|
||||
КИП, АСУ ТП, слаботочка Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422
|
zamtmn,
а что ж тогда должно высчитываться? Расстояние от каждой вершины до каждой? И как по-твоему вообще должна происходить автопрокладка кабеля? Это вот точно абсолютно ненужная трата машино времени. Блоки вершин вставлять не нужно. Они вставляются сами. На концах отрезков, которыми рисуется трасса. Еднственно возможный сбой выявил - это когда один из отрезков проходит через конточку другого отрезка. Так строить конечно нельзя, но пользователь сможет. И это может дать сбой. Так что придется думать, как этот вариант проанализировать и исправить. Итак, чтобы каждая из выбранных линий соединялась с конточками других линий только конточками. Как это лучше проверить? Кто подскажет алгоритм? |
|||
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
|
>>И как по-твоему вообще должна происходить автопрокладка кабеля?
также как и по твоему - по графу трассы. только этот граф совсем необязательно рисовать (временные блоки в вершинах), его нужно формировать в памяти. >>Так что придется думать, как этот вариант проанализировать и исправить. список примитивов на постройку графа можно проверить на самопересечения отлавливая "T" образные пересечения. пересекаемые сегменты разбивать на 2 в точке пересечения. т.е. было 2 линии - стало 3. также можно поступить и с "X" пересечениями - было 2 линии стало 4. причем линии тут не чрафические примитивы, а сущьности твоей программы |
|||
|
||||
КИП, АСУ ТП, слаботочка Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422
|
частично пришлось обработку в переменной сделать. Так даже понятнее код стал и легче читаться. Ну и, надеюсь, глюк преобразований и нестыковок типов тоже пройдет.
а вот с разбиениями это ты хорошо посоветовал. Главное, как это должно выглядеть в алгоритме... Пока не задумывался |
|||
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
|
>>Главное, как это должно выглядеть в алгоритме
2 пути - сдеать отдельную кнопку адв-тырыпыры-подготорка_трассы, которая заранее пробежится по всем примитивам трассы и разобъет пересекающиеся линии до состояния без пересечений с контактом концами. - пользователь может наглядно увидить что стало с его трассой. Для упрощения (начала) можно сделать так - обрабатывать полученный список линий перед трассировкой, не меняя примитивы в чертеже. |
|||
|
||||
КИП, АСУ ТП, слаботочка Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422
|
zamtmn,
в принципе второй путь совсем почти такой же, как и первый. Если нужнро будет разбивать примитивы даже, то при этом основные обхекты то все равно останутся. Такая вот хорошая функция explode в автокаде. Она как бы копирует объект, разбивает его, возвращает список объектов (как массив). А изначальный объект остается. ЕГо можно удалять, а можно и оставить. а по поводу алгоритма ты мне так и не ответил. Сам математический метод какой должен быть? МНе пока видится только так: узнать, не пересекаются ли примитивы межджу собой в точках, кроме конточек - для каждого отрезка задать уравнение прямой проверить на наличие таких точек. Естественно, надо ограничить в координатах, обо отрезки - не прямые. Достаточно муторный вариант. ВОт я и спрашиваю, может кто более оптимальный способ знает, как узнать, не пересекаются ли 2 отрезка между собой (не в конточках)? Может метры подскажут? VVA, ShaggyDoc , КрЫс? Наверняка они знают, как это сделать |
|||
|
||||
Программист-энтузиаст Регистрация: 17.07.2009
Воронеж
Сообщений: 571
|
Цитата:
Вычисляет координаты точки пересечения двух отрезков. Первый отрезок задается <точка1> <точка2>, второй <точка3> <точка4>.
__________________
cadtools |
|||
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
|
>>не пересекаются ли 2 отрезка между собой (не в конточках)?
Это знает интернет... пошарь на пример на http://algolist.manual.ru или других подобных сайтах. Но, тебе нужно работать не с отрезками заданными точками р1 и р2, а с лучами заданными р1+(р2-р1)*t, и соответственно иметь не координаты пересечения а параметр t в точке пересечения. если t в пределах [0..1] - пересечение находится на отрезке. t=0 - в начале, t=1 - в конце. координаты пересечения можно узнать в аодставив t в формулу луча. Это математически, у автокада думаю должны быть по этому поводу свои методы. Алгоритм элементарный - проверяем список отрезков на самопересечения, в случае обнаружения - разбиваем, уменьшаем отрезок в списке, а остаток отрезка добавляем в конец списка. так пока не проверим все отрезки. |
|||
|
||||
КИП, АСУ ТП, слаботочка Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422
|
zamtmn,
спасибо за совет, ща гляну ссылку. Кстати, нельзя разбивать отрезки, если они пересекаются вот так: X Потому что трассы могут пересекаться, но быть на разных уровнях (к примеру, кабель идет в траншее, но не заходит на эстакаду, хотя траншея пересекает линию эстакады на плане. Что думаешь по этому поводу? Насколько возможна такая ситуация? Думаю, что стоит оставить возможность таких пересечений. Просто если ползователь оставит у себя такие пересечения (Х) и вдруг укажет такие начальную и конечную точки, которые невозможно найти программе (как раз из-а Х-пересечений), то программа не вылетит, а просто в конце выполнения укажет, что такие-то узлы не смогли быть соединены между собой. Или, напр.,"Трасса от точки "Операторная" до точки "поз. 10" не может быть указана. Возможно, неправильно обозначена трасса." Где-то так ))) |
|||
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
|
>>Что думаешь по этому поводу?
думаю что для трассы просто линией не обойтись к ней всеравно нужно еще привязывать информацию по возможности трассировки кабелей разных типов. разноуровневые пересечения вполне можно осуществить в 3Д - трассировке без разницы 2д или 3д... В zcad я трассу разбиваю на x пересечениях, потому что изначально этот примитив был задуман как цепь для схем. Со временем планирую для каждого отрезка трассы задать способ прокладки и допустимые типы кабелей и разбивать с учетом этих параметров. Также необходимы разрывы типа стояков и уходов на другие планы, чтоб связывать пространственно не связанные трассы |
|||
|
||||
КИП, АСУ ТП, слаботочка Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422
|
zamtmn,
мы опять с тобой на разных языках говорим ))) Каждый кабель линией у нас никто не прорисовывает. Рисуют линию, представляющую собой поток кабелей (как частный случай - один кабель). См. ГОСТ ГОСТ 21.408-93 Правила выполнения РД АСУ. Там показано это. Да и пожарники в нашем проектном институте не рисуют каждый кабель, если по трассе проходит поток кабелей. Напр., на плане масштабом (1:100) это не нужно, нереально и незачем (см. тот же ГОСТ). Кабели - не трубы. Хотя даже и трубы,Ю когда идут пучком, для наглядности всегда показывают в разрезе. Кабели - так же. Разрез эстакады, траншеи, просто лотков вдоль стены. Поэтому простой линией - поток кабелей, саму трассу, по которой кабели пойдут. А на Х-пересечения я может просто укажу пользователю, но разбивать их принудительно не буду. TararykovDG, да, точно. Я ж совсем забыл, что есть такая функция ))) zamtmn, буду делать только проверку, чтобы не было пересечений у линий в других точках, кроме конточек. А трассу все-таки придется пользователю разок прорисовать отрезками, по моей команде созданными. В них пользователь сможет задать количество полок с лотками, из типы, которые проходят по данному участку. Вот здесь и правда буду пользоваться расширенными данными линий ))) Зато прога сама будет считать количество лотков. А в будущем - стоек и полок (если понадобится). Последний раз редактировалось Frigate, 14.11.2010 в 20:14. |
|||
|
||||
Регистрация: 27.02.2008
Сообщений: 140
|
За темой слежу с самого начала, т.к. имеется желание автоматизировать процесс, но к сожалению Lisp не владею. Жаль, что Supermax не часто в этой теме появляется, насколько понял по его уточняющим вопросам по различным функциям он решает аналогичную задачу. С этой темой http://forum.dwg.ru/showthread.php?t=14377&page=3 ты знаком, он как то даже сказал "...Nikolay 2, я пока в запарке и даже в темах ответы оперативно давать не могу. Жди." ...
Цитата:
Цитата:
Последний раз редактировалось Nikolay 2, 15.11.2010 в 22:23. |
|||
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
|
>>Полностью согласен, так обычно и делается и этого вполне достаточно.
я не спорю, при автотрассировке так и тожно быть. Тут вопрос в другом - как УДОБНО для пользователя получить информацию кто с кем и чем соединен. Но если взялся сам указывать трассы - делать это нужно максимально открытым способом, с привычными пользователю набором инструментов редактирования. По факту эти "полилинии" у автора есть, токлько спрятаны и под редактирование замаскировано пересоздание. А про привычные вещи типа убрать\добавить узел, растянуть - пользователю приходится забыть... Только ненадо говорить что планы почти не редактируются - делаются рас и навсегда)). Еще как редактируются |
|||
|
||||
КИП, АСУ ТП, слаботочка Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422
|
Nikolay 2,
честно говоря, разрезы мне не кажется реальным реализовать, по крайней мере для моих нужд их автоматом не сделать. Эстакады у нас делают электрики, им в сво. очередь сначала дают разрезы технологи - ведь в основном все сети идут вместе. Так что мы получаем иногда не слишком удобоваримый набор разрезов. Часто еще и в условном масштабе - т.е. без масштаба, с проставленными размерами - до земли, между полками, до труб и тп. Как это все программно обработать - не представляю. Единственное - на эти же разрезы можно копировать перечень кабелей. Для удобства копирования уже сделал несколько полезных кнопок. Скоро выложу подправленный вариант проги. zamtmn, может я б и занялся полилиниями, чтобы их можно было редактировать... Но пока времени очень мало, и все его расходую на автотрассировку. Сегодня все вылетавшие ошибки удалось побороть. Осталось только избавиться от тестировочного анахронизма - блоков вершин - все считать "скрыто". Ну и продумать, как указывать реальные позиции. |
|||
|
||||
Регистрация: 27.02.2008
Сообщений: 140
|
Цитата:
Трассы конечно редактируются и полилиния здесь более удобна (добавил 1,2...10 вершин и таскай за узлы как нужно. Сам для этих целей использую lisp "Новые команды для работы с полилинией"), но и перечертить не много времени нужно. А затем автотрассировкой.... Цитата:
|
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Посоветуйте программу для построения профилей наружных сетей? | dextron3 | Вертикальные решения на базе AutoCAD | 18 | 11.03.2012 16:37 |
Сводный план сетей | proekt_mep | Инженерные сети | 42 | 16.06.2011 23:09 |
Ищу книгу "Проектирование кабельных сетей и проводок" под редакцией Г.Е.Храпченко 1980 | Инзиля | Поиск литературы, чертежей, моделей и прочих материалов | 8 | 03.02.2009 14:47 |