Вопрос from Adrianic

0 голосов
спросил 28 Июль, 03 от Гость (210,080 баллов) в категории Программные продукты Esri

А как можно сослаться на вновь созданный объект (обычно он выделенный), т.к. атрибуты нужно назначить для нового объекта.

 

'Если можно, опишу еще раз мою задачу. Слой из геобазы добавлен (Отображается в ТОС). Запущен сеанс редактирования (Редактор\Начать редактирование). Стандартными инструментами (типа Скетч) рисуется объект (точечный, линейный или площадной в зависимости от добавленного слоя). Далее, все действия должна выполнять моя программа, а именно: вызывается форма с ComboBox’ами, в которых выбираются значении и по закрытии формы эти значения, присвоенные переменным типа String, должны попасть в определенные поля (Техт) таблицы атрибутов, а именно в запись созданного только что объекта. Может можно использовать какое-нибудь свойство типа Selection, потому, как вновь созданный объект на слое автоматически становиться выбранным. Добавление атрибутов необходимо только для созданного объекта.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

2 Ответы

0 голосов
ответил 29 Июль, 03 от Andranic (2,620 баллов)

Можете использовать FeatureSelection у IMap, примерно так:

    Dim pDoc As IMxDocument
    Dim pMap As IMap
    Dim pEnumFeat As IEnumFeature
    Dim pFeature As IFeature
    Set pDoc = ThisDocument
    Set pMap = pDoc.FocusMap
    Set pFeature = Nothing
    'Получаем массив выделенных объектов (У вас как я понял будет один объект)
    Set pEnumFeat = pMap.FeatureSelection
    If Not (pEnumFeat Is Nothing) Then
        Set pFeature = pEnumFeat.Next
    End If
    While Not (pFeature Is Nothing)
        pFeature.Value(YOUR_FIELD_INDEX) = "4444"
        pFeature.Store
        Set pFeature = pEnumFeat.Next
    Wend

YOUR_FIELD_INDEX означает индекс вашего поля в котором хотите изменить значение объекта. 

0 голосов
ответил 01 Авг, 03 от Alexander1 (32,520 баллов)

Для того, чтобы заполнить аттрибуты вновь созданного объекта, нужно перехватить событие 'OnCreateFeature' редактора.

Если в двух словах, то :

- декларируем

Private WithEvents EditorEvents As Editor

- затем

Set EditorEvents = m_pEditor

- и помещаем необходимый код в процедуру

Private Sub EditorEvents_OnCreateFeature(ByVal obj As esriCore.IObject)

 

Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...