![]() |
|
Как пикетаж получить
Я хочу ведомость отметок как мне надо выгрузить. Не поняла, где пикетаж взять по главному пути.
а еще есть какие-то ункции, чтобы габарит считать или междупутья? |
Прошу прощения за ожидание!
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 - если интересно - напишу подробно. Тимофей. |
Подскажите, можно ли из var pr = ApplicationHost.Current.ActiveProject as ICoreProject напрямую получить Topomatic.Dtm.Core.TerrainModels?
|
Добрый день!
Для этого Вы можете вызвать у него метод FindItem() и передать туда Guid этой коллекции. var terrains = pr.FindItem(new Guid("2986169F-A8D6-40d9-9329-1975F215E5B8")) as TerrainModels. Отмечу, что использование ссылок на Topomatic.Dtm.Core это не очень хорошая практика. Лучше не допускать перекрестных ссылок между модулям и не ссылаться на такие модули как как Topomatic.*.Core и Topomatic.*.Controller. Исключение составляют модули Topomatic.Core и Topomatic.Alg.Core. Если Вам необходимо создать новую поверхность или получить список всех поверхностей, лучше воспользоваться методами представленными в классе Topomatic.Alg.Runtime и использовать следующий код для создания новой поверхности: Код:
Или такой, для возврата списка всех поверхностей: Код:
|
Вложений: 2
Чем отличаются models.Collections и models.ItemList и почему в первой нет геологии?
|
ItemList - свойство класса FolderItem - это список всех элементов, включенных в эту папку в проекте.
Collections - свойство класса FileItemCollectionGroup, который наследуется от FolderItem - это список коллекций, включенных в папку в проекте. Фактически Collections это Код:
В структуре ядра 15 версии существуют как отдельные элементы, так и элементы-коллекции. Последние поддерживают возможность создания внутри себя элементов определенного типа, например коллекция поверхностей - позволяет создавать поверхности. Поскольку геология не является коллекцией, т.е. не может создавать внутри себя элементы, она не отображается в свойстве Collections. Обычно работа напрямую с коллекциями Вам не требуется, исключением является поиск или создание элемента. |
У меня есть одна или несколько Topomatic.Sfc.StructureLine, как ее выделить в CadView и отобразить в окне "Свойства".
Можно ли CadView смаштабировать по размерам BoundingBox2D структурной линии? На плане |
Для выделения одной или нескольких структурных линий вы можете воспользоваться методом SelectStructureLine у класса SurfaceLayer туда необходимо передать индекс структурной линии и флаг, выделена она или нет.
Да масштабировать возможно, нужно воспользоваться методом ZoomBound у нужного экземпляра класса CadView . Туда необходимо передать границы, а флаг animate говорит о том, будет ли переход мгновенным или плавным. |
У меня есть Topomatic.Sfc.Surface - как сделать ЦММ, ее содержащую "Текущей" и включить для нее видимость(лампочку) на плане?
|
Вам необходимо получить ЦММ содержащую Вашу поверхность, сделать это можно например таким способом:
Код:
Для управления видимостью код выглядит аналогично, просто мы приводим последнего владельца не к ICoreCollectionItem а к ILayer Код:
|
Часовой пояс GMT +3, время: 4:32. |
|
vBulletin v3.0.7 , Copyright ©2000-2023, Jelsoft Enterprises Ltd.
Copyright © 2003-2023, НПФ "ТОПОМАТИК".