RUS  ENG 

Нахождение пути

Страницы: 1
RSS
Нахождение пути
 
Здравствуйте
У меня такой вопрос такой
Есть слой с определенным количеством линий и мне нужно найти путь от одной точки к другой
Насколько я понимаю надо в точках излома линий проставить символы, так вот возможно ли программно (visual basic) определить все точки излома в слое и так же программно поставить на них символы.
С уважением...
 
Нужно не в точках излома узлы ставить, а должна быть такая структура: узел - полилиния - узел полилиния. Причем узел должен быть типовым и линия типовым объектом, с признаком участок.
Т.е. если есть полилиния и есть желание искать путь от любой из вершин, нужно не на вершины узлы ставить, а заменить всю эту полилинию на набор типовых отрезков, на концах которых будут узлы.
Программно можно ссделать.

PS. Не собрались ли еще влиться в ряды официальных пользователей?
 
Эх уважаемый Lyosha не сыпьте мне соль на рану
Я уже второй год бьюсь над тем чтоб "влиться в ряды", а денег как всегда начальству жалко, правда я надеюсь что в этом году проблема должна решится, ибо на наш рынок вошел Майкросовт, и вроде скоро начнутся тотальные проверки офисов на отсутствие лицензионного ПО, так что нам придется делать закуп, вот тогда я думаю и втиснуть (извините за выр-е) Ваш продукт.
Теперь касательно вопроса, нельзя ли поподробней?
С уважением...
 
Подробнее. Длля программного занесения сети два метода: Layer.AddPolyline(PLine, style, TypeID, ModeNum) и Layer.AddSymbol(X, Y, TypeID, ModeNum) Причем символьные и линейные объекты должны быть типовыми. Символы добавляются на начало и конец участка, т.е. их X,Y совпадать c Pline.GetX(1), Pline.GetY(1) и Pline.GetX(pline.NumTops) Pline.GetY(pline.NumTops)
И все. Если следующий участок начинается с конца предыдущего, то символьный объект в его начале добавлять уже не надо.
Все аналогично ручному рисованию.
 
Lyosha,
Спасибо большое, сейчас начну пробовать
С уважением...
 
Lyosha,,
Здравствуйте еще раз.
Наконец-то удалось попробовать, все отлично работает
У меня возник еще такой вопрос по этой теме
Участкам задается направление, возможно чтоб кратчайший путь находился с учетом направлений и возможно ли устанавливать направления в обе стороны?
И еще, в help-е при создание нового линейного типа у Вас кроме УЧАСТОК, ОТСЕКАЮЩИЙ и ПЛОЩАДНОЙ есть так же и ДВУНАПРАВЛЕННЫЙ - у меня в zulu ДВУНАПРАВЛЕННЫЙ отсутствует (Update последний).
С уважением...
 
Проводимость двусторонняя, односторонняя или никакая - это свойство режима а не типа. В объектной модели свойство ObjectMode.SwitchState
На страничке настройки режима спиок для выбора этого свойства появится только если на странице настройки типа стоит галочка "Отсекающий".
 
Lyosha,
Здравствуйте
Попробовал, все работает
В продолжение темы, а можно сделать так что б показывались альтеонативные пути
Ну к примеру путь отобразился но он не устраивает - сделать так чтоб на экран вывелся бы следующий по длине путь
Еще раз спасибо
С уважением...
 
Следующего по длине пути, такого нет, т.к. поиск основан на построении дерева именно кратчайших путей. Чтобы найти альтернативный путь, нужно в уже найденном пути перекрыть один из участков, и повторить поиск пути. Чтобы перекрывая участок не нужно было редактировать сеть, можно воспользоватся методом Layer.NetworkTools.OverloadElemState Он меняет проводимость, не меняя режим объекта. В Zulu то же самое можно сделатьв режиме флажков если в участок кликнуть мышкой, удерживая контрол.
 
Lyosha,
Большое спасибо, честно говоря я так и думал делать, просто про OverloadElemState в Help-е ничего вроде не написано.
Еще раз спасибо.
С уважением
Страницы: 1