Civil 3D, InfraWorks и Инфраструктура – Русский – только для чтения
Делитесь знаниями, задавайте вопросы, читайте самые популярные темы по Civil 3D, Map 3D.
отмена
Отображаются результаты для 
Показать  только  | Вместо этого искать 
Вы имели в виду: 

Автоматическое обновление слоев из базы данных Oracle

0 ОТВЕТОВ 0
Ответить
Сообщение 1 из 1
gisstat
517 просмотров, 0 Ответов

Автоматическое обновление слоев из базы данных Oracle

Здравствуйте.
В Civil 3D используются данные из Oracle через FDO соединение. Система ориентирована на совместную работу. Необходимо автоматизированно обновлять в окне чертежа изменения, произошедшие у других пользователей.
Если использовать следующий код и вызывать его вручную с помощью команды, то, в основном, все работает.
[CommandMethod("MANREFRESH")]
public void man_refresh()
{
AcMapMap currentMap = AcMapMap.GetCurrentMap();
MgLayerCollection LayerCol = currentMap.GetLayers();
for (int i = 0; i < LayerCol.Count; i++)
{
MgLayerBase currentLayer = LayerCol.GetItem(i);
currentLayer.ForceRefresh();
}
Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor.Regen();
}
Если же тот же самый код запускать из dll по таймеру или с помощью уведомления через socket, то получаем ошибку:

>> System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.

Если убрать Regen(), то получаем пустое окно чертежа. В этом случае объекты вернуть можно, вручную щелкая правой кнопкой мыши по слоям Oracle и выбирая "Обновить слой".
Может кто знает в чем может быть проблема, или есть альтернативные способы обновления данных?

0 ОТВЕТОВ 0

Не нашли то, что искали? Задайте вопросы в сообществе или поделитесь своими знаниями.

Новая тема  

Autodesk Design & Make Report