Рабочая область при программировании на .Net

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Ответить
wladfm
Интересующийся
Сообщения: 47
Зарегистрирован: 04 июл 2016, 16:02
Репутация: 2

Рабочая область при программировании на .Net

Сообщение wladfm » 25 сен 2017, 15:36

Добрый день. Разрабатываю надстройку для ArcMap на C#.
Мне необходимо произвести некоторые действия с таблицами в режиме редактирования. Для этого я определяю IEditor:
IApplication m_application = Hook as IApplication;
UID editorID = new UIDClass();
editorID.Value = "esriEditor.Editor";
IEditor m_Editor = m_application.FindExtensionByCLSID(editorID) as IEditor;
Далее мне необходимо работать со слоями:
IEditLayers editLayers = (IEditLayers)m_Editor;
IFeatureLayer NewLayers = (IFeatureLayer)editLayers.CurrentLayer;
И вроде всё нормально. Однако как только нажать кнопку Сохранить в Редакторе или закрепить версию editLayers.CurrentLayer становится равным null и приходится перезапускать редактор. Рабочая область при этом не меняется, остается прежней.
Может кто сталкивался с подобной проблемой и знает её решение?

Monstria
Активный участник
Сообщения: 122
Зарегистрирован: 17 май 2011, 06:22
Репутация: 44
Откуда: Нижний Новгород

Re: Рабочая область при программировании на .Net

Сообщение Monstria » 05 окт 2017, 20:12

Зачем работать напрямую со слоями? Отлавливайте нужные события OnChangeFeature, OnCreateFeature, OnStartEditing, OnStopEditing и т.п. определяете редактируемый объект и поступайте как нужно

wladfm
Интересующийся
Сообщения: 47
Зарегистрирован: 04 июл 2016, 16:02
Репутация: 2

Re: Рабочая область при программировании на .Net

Сообщение wladfm » 06 окт 2017, 08:32

В том то и проблема, что нужно ещё и со слоями. А про события спасибо что напомнили, удобная вещь

Monstria
Активный участник
Сообщения: 122
Зарегистрирован: 17 май 2011, 06:22
Репутация: 44
Откуда: Нижний Новгород

Re: Рабочая область при программировании на .Net

Сообщение Monstria » 09 окт 2017, 08:43

И все таки для меня загадка - что мешает обращаться к слоям когда происходят определенные события и что за нужда постоянно держать слои под постоянным контролем?

wladfm
Интересующийся
Сообщения: 47
Зарегистрирован: 04 июл 2016, 16:02
Репутация: 2

Re: Рабочая область при программировании на .Net

Сообщение wladfm » 09 окт 2017, 14:44

Monstria писал(а):
09 окт 2017, 08:43
что за нужда постоянно держать слои под постоянным контролем
Пользователи...
Действия происходят лишь после того, как пользователь нажал на кнопку. Да, можно отслеживать какой слой (данные) на редактировании, но смысл, если это можно проверить при нажатии на кнопку? Единственное событие - это смотреть или пользователь начал редактирование. Просто мне не понятно, почему после сохранения вылетает значение редактируемого слоя

Monstria
Активный участник
Сообщения: 122
Зарегистрирован: 17 май 2011, 06:22
Репутация: 44
Откуда: Нижний Новгород

Re: Рабочая область при программировании на .Net

Сообщение Monstria » 09 окт 2017, 16:47

wladfm писал(а):
09 окт 2017, 14:44
Просто мне не понятно, почему после сохранения вылетает значение редактируемого слоя
При изменении данных НЕОБХОДИМО принудительно выходить в режим редактирования (если конечно не начат сеанс редактирования), все измененные объекты сохранять. Если пользователь в ручную сохраняет изменения - то происходит закрытие сеанса редактирования (все изменённые объекты, но не сохраненные, востанавливают свои первоначальные состояния), и запуск нового сеанса - ссылка на редактор соответственно меняется, поэтому у вас на старой ссылке получается NULL.

Отслеживай события начала и конца редактирования, не забывай сохранять измененные объекты и будут счастье :)

wladfm
Интересующийся
Сообщения: 47
Зарегистрирован: 04 июл 2016, 16:02
Репутация: 2

Re: Рабочая область при программировании на .Net

Сообщение wladfm » 11 окт 2017, 08:29

спасибо, очень доходчиво объяснили

Ответить

Вернуться в «ArcGIS»