Официальный сайт геоинформационной системы (ГИС) ObjectLandОфициальный сайт геоинформационной системы (ГИС) ObjectLand
  
 
ПОИСК ПО САЙТУ:
yandex.ru
КАРТА САЙТА
 
главная / поддержка / форум
E-MAIL:ПАРОЛЬ: 
регистрация

Обсуждение

 COMCOM [ Александр ]
Четверг, 2 июня 2011, 17:09

Извините если тема повторяется, но вроде нет такой темы.
Возникает проблема при использование COM интерфейса OL в проектах MS Visual studio 2008.

Очень часто при компиляции проекта, отваливается библиотека GDBEngineLib.dll приходится переустанавливать OL и затем заново добавлять ссылку на библиотеку.

Без переустановке (исправления) OL'да СОМ объект не отображается в списке. А если добавлять ссылку на СОМ объект, выбирая библиотеку из папки в которой устанавливался
OL т.е. добавление на дллку Interop.GDBEngineLib.dll, проект нормально компилируется, но при запуске программы и попытки открыть ОЛ возникает ошибка.
Может я что-то не так делаю?

Подскажите пожалуйста, как правильно добавить библиотеку в проект MS Visual Studio, что бы не возникало таких проблем.

 COM [ ObjectLand Support ]
Пятница, 3 июня 2011, 17:11

Опишите подробнее конфигурацию вашей системы: ОС, версии .net framework, visual studio, OL.

 COM [ Александр ]
Суббота, 4 июня 2011, 14:23

Windows XP professional SP2
net framework 3.5 SP 1
visual studio 2008 en (standard edition)
OL 2.7.5

Не слишком подробная информация, но мне кажется достаточная.

 COM [ ObjectLand Support ]
Понедельник, 6 июня 2011, 23:08

Это самая распространенная конфигурация и в ней с такой проблемой не сталкивались. Да и в других конфигурациях тоже не было проблем.

На всякий случай опишите как вы добавляете ссылку на библиотеку типов.

 COM [ Александр ]
Понедельник, 27 июня 2011, 10:38

Ребят, большое спасибо за ваше желание помочь.
Ошибка была с ключами и библиотека не была добавлена в глобальный кэш.
После решения данной проблемы, возникла другая...
При попытке открыть для просмотра через ком интерфейс, одну из тем, вываливается ошибка "getSelectionNumber" not understood.
Данная ошибка возникает только при открытие тему через ком интерфейс, если запустить ОЛ в обычном режиме (т.е. на прямую, через пуск->все программы...), то никакой ошибке не будет.
и еще +, данная ошибка возникала на ОЛ 2.7.6, а на 5 версии её не было, и после переустановки с 2.7.6 обратно на 5, ошибка не исчезла.
В чем может быть проблема?

 COM [ ObjectLand Support ]
Понедельник, 27 июня 2011, 14:09

Позвольте несколько уточнений:
1. Ошибка возникает при открытии любой темы или какой-то конкретной?
2. Вы используете объект ThemeBrowser? можете привести пример кода открытия темы?

 COM [ Александр ]
Понедельник, 27 июня 2011, 18:09

Ошибка возникает при открытие одной определенной темы.
Пример открытия темы и селектирования объекта по его ID
public static void ShowMapOnObjectLand(string them, string layerName, string fileName, string value) {
if (gdbEngine == null) {
return;
}
int objectID = 0;
if (!int.TryParse(value, out objectID)) {
return;
}
if (gdbThemeBrowser != null) {
gdbThemeBrowser.Close();
gdbThemeBrowser = null;
}
try {
gdbTheme = objGDB.Themes.Item(them);
} catch (Exception ex) {
return;
}
if (gdbThemeBrowser == null) {
gdbThemeBrowser = gdbEngine.CreateThemeBrowser((GDBTheme)gdbTheme);
gdbThemeBrowser.SetPosition(1, 1);
gdbThemeBrowser.SetSize(600, 600);
}
if (!gdbThemeBrowser.Visible) {
gdbThemeBrowser.Visible = true;
}
if (!gdbThemeBrowser.Locked) {
gdbThemeBrowser.Active = true;
}
IGDBTheme objTheme = gdbThemeBrowser.Theme;
GDBFeaturesetCondition objFeaturesetCondition = null;
objFeaturesetCondition = objTheme.CreateFeaturesetCondition(
GdbLogicalOps.gdbLogicalNone, GdbFeaturesetOperations.gdbFeaturesetByFeatureNumbers);
try {
objFeaturesetCondition.Layer = objTheme.Layers.Item(layerName);
} catch (Exception ex) {
return;
}
objFeaturesetCondition.FeatureNumbers = objectID;
gdbThemeBrowser.Theme.FeaturesetConditions.Append(objFeaturesetCondition);
gdbThemeBrowser.Featureset = objTheme.OpenFeatureset(true);
try {
gdbThemeBrowser.ExecuteCommand(GdbBrowserCommands.gdbBrowserCmdFeaturesetShowAll);
} catch (Exception) {
}
}

Еще один кусок кода, который открывает тему для просмотра.
private void BtOpenGDB_Click(object sender, EventArgs e) {
if (CbThem.SelectedItem != null) {
gdbTheme = gdb.Themes.Item(CbThem.SelectedItem);
strThemeName = gdbTheme.Name;
}
if (gdbThemeBrowser != null) {
gdbThemeBrowser.Close();
gdbThemeBrowser = null;
}
if (gdbTheme == null)
return;
gdbThemeBrowser = gdbEngine.CreateThemeBrowser((GDBTheme)gdbTheme);
tbch = new GDBThemeBrowserEvents_ThemeBrowserChangedEventHandler(
gdbThemeBrowser_ThemeBrowserChanged);
gdbThemeBrowser.ThemeBrowserChanged += tbch;
gdbThemeBrowser.SetPosition(0, 0);
gdbThemeBrowser.SetSize(600, 600);
if (!gdbThemeBrowser.Visible) {
gdbThemeBrowser.Visible = true;
}
if (!gdbThemeBrowser.Locked) {
gdbThemeBrowser.Active = true;
}
}

Ошибка возникает в обоих случаях.

 COM [ ObjectLand Support ]
Вторник, 28 июня 2011, 14:39

Попробуйте в ObjectLand выполнить восстановление целостности вашей ГБД (меню ГБД\Восстановить...). Если после этого ошибка не исчезнет, то пришлите вашу базу на адрес поддержки, чтобы мы смогли повторить ошибку у нас.

 COM [ Александр ]
Вторник, 28 июня 2011, 17:31

Причина ошибки выявлена, сразу же извиняюсь за дезинформацию, причина не переход с версии 6 на 5, а установка приложения "Подписи" 7.6 для ГИС ObjectLand 2.7+
subscrip76.exe, после установки данного приложения, при просмотре некоторых тем, начало вываливаться выше описанная ошибка.
Не подскажите, если ли способы не отказываясь от приложения подписи, избавится от данной ошибке?

 COM [ ObjectLand Support ]
Вторник, 28 июня 2011, 18:09

Вы уверены? Т.е. если удалить приложение подписи, то ошибка исчезает?

И еще было бы полезно знать в какой конкретно строке кода возникает описанная ошибка (например в первом приведенном фрагменте)?

 COM [ Александр ]
Среда, 29 июня 2011, 12:09

Абсолютна уверен. Удалив приложение подписи, ошибка исчезла.

Ошибка возникает в строке
gdbThemeBrowser = gdbEngine.CreateThemeBrowser((GDBTheme)gdbTheme);

 COM [ ObjectLand Support ]
Среда, 29 июня 2011, 16:15

Попробуйте вместо строчки кода gdbThemeBrowser.ExecuteCommand(GdbBrowserCommands.gdbBrowserCmdFeaturesetShowAll) использовать сл. код:
gdbThemeBrowser.Theme.WindowPosToFeatureset(gdbThemeBrowser.Featureset, 1, 0)

Напишите исчезла ошибка или нет.

 COM [ Александр ]
Среда, 29 июня 2011, 18:06

Попробовал заменить, не помогло.
Да как это может помочь, если ошибка возникает до выполнения данной строчки кода?
И у предложенной вами строчки кода есть минут, выделенный объект не прорисовывается полностью т.е. если объект очень большой, то на экране будет только его часть, когда строка кода
gdbThemeBrowser.ExecuteCommand(GdbBrowserCommands.gdbBrowserCmdFeaturesetShowAll) делает так что бы объект полностью поместился на экране.

 COM [ ObjectLand Support ]
Четверг, 30 июня 2011, 10:46

Некоторые вопросы могли показаться странными, но это частично связано с тем что не удается повторить ошибку...

Еще пара вопросов:
1. Есть ли в теме вызывающей ошибку внешние слои и настроены ли для нее подписи?
2. Пробовали восстановить целостность ГБД?

 COM [ ObjectLand Support ]
Четверг, 30 июня 2011, 15:37

В догонку...

Уточните ошибка точно "getSelectionNumber" not understood или все-таки "getSelectionNumber:" not understood (с двоеточием).

 COM [ Александр ]
Понедельник, 4 июля 2011, 11:00

1) могу точно сказать, что ошибка возникает при просмотре темы с настроенными подписями, а вот насчет внешних слоев, ничего сказать не могу, я просто не знаю как отличить внешний слой от внутреннего.
2) Пробовал восстановить, без результатов. Думаю нужно попробовать отключить подписи, но я в данный момент не имею доступа к ГДБ.

Да, кстати, ошибка "getSelectionNumber:" not understood (с двоеточием).

 COM [ ObjectLand Support ]
Вторник, 5 июля 2011, 17:06

Действительно при работе с СОМ лучше не использовать подписи, т.к. они до конца не протестированы на совместимость с СОМ.

Указанную вами ошибку, к сожалению, так повторить и не удалось. Поэтому если у вас есть возможность, то вышлите на адрес поддержи ГБД (если она конечно не очень большая) и рабочий проект при работе которого возникает описанная ошибка.

Ответить

Знаком «*» отмечены обязательные для заполнения поля.
Ваше имя:  *
Адрес электронной почты:  
Тема:  *
Сообщение:
 *
Подтверждение:
(не требуется для зарегистрированных пользователей)
 *
 



Copyright © 1999–2026 ГИС ObjectLand
ГИС ObjectLand ® ООО «Радом-АйТи»
Информация о лицензировании
главная | о продукте | скачать | купить | поддержка | новости