Показать сообщение отдельно
  #2  
Старый 09-21-2012, 17:32
Тимофей Ананичев Тимофей Ананичев вне форума
Разработчик Robur
 
Регистрация: Sep 2012
Сообщения: 18
По умолчанию

Прошу прощения за ожидание!

1. Пикетаж можно получить у подобъекта (Класс Alignment из сборки Topomatic.Alg.dll) свойство alignment.Stationing. Как пользоваться пикетажом описано в 6 примере в руководстве разработчика Topomatic AP3.

Также Вы можете просмотреть свойства и иерархию классов, открыв эту сборку, например, в Visual Studio. В ближайшее время будет будет выпущена подробная документация с описанием классов и их методов и свойств основных библиотек нашей платформы - API (сейчас она в "зародышевом" состоянии topomatic_ap3_api.pdf)

2. Так как в данный момент на новой платформе выпущены только "Robur Изыскания" без станционного и ж/д функционала, то в Вашем модуле необходимо явно задавать имя подобъекта главного пути, тогда по этому имени можно получить сам Alignment.

Если Вы пишете на Visual Studio (С#), то:

a) Надо получить объект открытого проекта (и проверить на null):

var pr = ApplicationHost.Current.ActiveProject as ICoreProject;

б) Получить его список моделей:

var models = pr.FindItem(new Guid("30061C68-0D76-4a29-BF5C-B5ECADBCA3FE")) as ICoreCollection;

в) А затем, навигацию до узла проекта нужного подобъекта осуществлять с помощью классов CoreDirectoryInfo / CoreFileInfo

г) Получить подобъект по найденному элементу проекта (типа ICoreCollectionItem) надо так: var alignment = ((IAlignmentContainer)сoreCollectionItem.WrappedOb ject).Alignment as Alignment;

На словах несколько мудрёно, но мы, наверное, сделаем такую сниппет-функцию для разработчиков, чтобы они использовали ее.

CoreFileInfo и другие классы работы с деревом проекта описаны в сборках Topomatc.Core.dll и Topomatc.Core.ServiceClasses.dll - если что, спрашивайте!

3. Габарит до пути (расстояние по касательной до оси трассы) можно посчитать с помощью функции подобъекта alignment.Plan.CompoundLine.PosToStaOffset, только нужно не забыть, если нужно, учесть, ширину коли и по какому рельсу снят подобъект в кривых и т.п.

4. Междупутья рассчитываются сложнее, чем габарит, так как нужно найти минимальное расстояние от одного подобъекта до другого на определенном пикете - т.е., например, вычислять его половинным делением или другим способом, используя фнункции StaOffsetToPos и PosToStaOffset также можно использовать и математику Robur - если интересно - напишу подробно.

Тимофей.
Ответить с цитированием