![]() |
|
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте!
При попытке получить коллекции инженерных сетей или картограмм, я получаю обфусцированные экземпляры коллекций. С ЦММ, ЖД, АД и трассами проблем нет. Получил коллекцию, а дальше получаешь из её элементов необходимые данные. В случае с Инж. сетями и картограммами я попадаю в тупик. Максимум на что меня хватило - это: Код:
Часть нужных данных я выдернуть смогу, но хочется работать более полноценно и не наугад, как, например, с TerrainModelsCollectionItem или же AlignmentModel. |
#2
|
|||
|
|||
![]() Для получения коллекции инженерных сетей, нужно использовать Id 66494A46-732A-47D1-A536-A62065F24731 и приводить объект к интерфейсу IPipeNetworkContainer, а для картограмм A5D3E59D-AF17-4394-883D-4CE053310DC1 и использовать интерфейс ICartogramContainer
Код:
|
#3
|
|||
|
|||
![]() Благодарю за ответ.
Препроцессор выдает ошибку, что ICoreCollection не Enumerable. При попытке привести его к IEnumerable у элементов коллекции пропадает свойство WrappedObject. Но если привести их к IWrapped, то всё срабатывает. С картограммами схожая ситуация. Получилось вот так: Код:
Вообще очень странно что поведения всех элементов проекта так сильно отличаются друг от друга и нет даже какого-нибудь обобщающего базового класса. С ЦММ, ЖД и АД всё намного проще. Есть FileSystemItem и с любой коллекцией объектов я могу работать используя один метод и не беспокоиться. Здесь же приходится для каждого элемента искать свой подход. Например Drawing у инженерных сетей лежит в самом PipeNetwork, в то время как у Cartogram этого свойства нет, но оно есть у контейнера. На поиск, казалось бы очевидных вещей, приходится тратить кучу времени, чтобы для каждого случая разработать методику получения тех или иных данных. |
#4
|
|||
|
|||
![]() Давайте я отвечу более развернуто. Все коллекции поддерживают базовый интерфейс ICoreCollection. У этого интерфейса есть метод GetItems который позволяет получить список элементов ICoreCollectionItem, используя заданный предикат (допустимо передавать null в качестве предиката, тогда метод вернёт все элементы коллекции):
Код:
Каждый элемент ICoreCollectionItem имеет свойство WrappedObject - это модель, которая лежит в Вашем элементе. Дальше, Вы приводите модель к требуемому интерфейсу, это может быть IDrawingContainer, IAlignmentContainer, ISurfaceContainer и т.п. и работаете с необходимой Вам моделью напрямую. Более того, на данный момент, все эти элементы наследники от FileSystemItem и мне не совсем понятно, в чем Вы видите разницу между например элементом ядра ЦММ и элементом ядра картограммы? |
#5
|
|||
|
|||
![]() Спасибо!
Из-за обфускации для меня не были очевидными многие вещи, но теперь всё раскладывается по полкам и становится более понятным. |
Навигация по основному сайту |
Главная | Каталог продуктов и услуг | Где купить | Сопровождение |
Вакансии | О компании | Обзоры | Канал на YouTube |