На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Andrey Gheleznyakov (Все сообщения пользователя)

Поиск  Пользователи  Правила  Войти
Форум » Пользователи » Andrey Gheleznyakov
Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 ... 4 5 6 7 8 9 10 11 12 13 14 ... 280 След.
Лицензия на ГИС Конструктор для Qt Designer код продукта 1701
 
То что без ключа не работает - это правильно. С ключом должна. Просьба сообщить номер лицензии на почту технической поддержки.
1С8.3 и GIS ToolKit Active: Выделение объектов, Интеграция GIS ToolKit Active в 1С8.3 Выделение объектов
 
[QUOTE]Анатолий Рогатнев написал:
Просмотреть (в 1С8.3) список этих объектов (не понял где они могут быть сохранены  в ГИС Панорама ?).[/QUOTE]
Найденные объекты на карте в предыдущем пункте необходимо сохранить в справочнике 1С. Для хранения можно выбрать или уникальный атрибут из семантики или номер объекта на карте (MapObj.Key)/
Логика хранения и использования зависит от требований информационной системы. Вопросы дальнейшего поиска по сохраненным ранее параметрам также рассматривались, а именно:

Поиск по номеру
Процедура Выделить3ОбъектаНажатие(Элемент)
// Пример группового выделения нескольких объектов
// Выделить три объекта, зная название карты и номера объектов
карта1 = ЭтаФорма.ЭлементыФормы.axMapView1;

   карта1.ViewSelect.ClearSampleAll(); // очистим параметры поиска

   название_карты = "Ногинский район";        
   icount = 0;

ret = карта1.ViewSelect.SelectSample(Истина, название_карты, 104007); // автодорога
Если ret = 0 Тогда
Сообщить("Объект с номером 104007 не найден");
   Возврат;
КонецЕсли;
   icount = icount + 1;

ret = карта1.ViewSelect.SelectSample(Истина, название_карты, 35695); // квартал
Если ret = 0 Тогда
Сообщить("Объект с номером 68512 не найден");
   Возврат;
КонецЕсли;
   icount = icount + 1;

ret = карта1.ViewSelect.SelectSample(Истина, название_карты, 18299); // озеро
Если ret = 0 Тогда
Сообщить("Объект с номером 187140 не найден");
   Возврат;
КонецЕсли;
   icount = icount + 1;

clAqua = 16776960;  
clRed  = 255;
   карта1.SetViewSelectedEx(Истина, clRed);

карта1.ViewScale = 25000;

// спозиционируем первый объект в центр окна
   карта_объект = ЭтаФорма.ЭлементыФормы.axMapObj1;
Если карта_объект.SeekObject(название_карты, 104007) <> 0 Тогда
карта_объект.Center();
КонецЕсли;

Сообщить("Выделено " + icount + " объекта(ов)");
КонецПроцедуры

Поиск по семантике (для уникального значения семантики будет найден только один объект)
// Поиск первых 10-ти объектов карты по значению семантики
Процедура ПоискСемантика10(Элемент)

Карта = ЭтаФорма.ЭлементыФормы.axMapView1;
Если Карта.Active  = Ложь Тогда
Сообщить("Карта не открыта");
Возврат;
КонецЕсли;

ПоискПоКарте = ЭтаФорма.ЭлементыФормы.axMapFind1;
ОбъектКартыДляПоиска = ЭтаФорма.ЭлементыФормы.axMapFind1.MapObj;

// перебрать первые 10 объектов карты в слое Промышленные и социальные объекты
ПоискПоКарте.cMapSelect.ClearAll();
ПоискПоКарте.Active = Истина;

счетчик_объектов = 0;
поиск = ПоискПоКарте.First();

Пока поиск = Истина Цикл                
// Проверим, что объект устаривает по характеристикам, например, номеру слоя карты
// Слой промышленные и социальные объекты имеет номер в классификаторе объектов карты = 7
Если ОбъектКартыДляПоиска.LayerNumber <> 7 Тогда
  поиск = ПоискПоКарте.Next();
      Продолжить;
    КонецЕсли;

     счетчик_объектов = счетчик_объектов + 1;
 поиск = ПоискПоКарте.Next();

Если счетчик_объектов > 9 Тогда
Прервать;
КонецЕсли;

   КонецЦикла;

Сообщить(счетчик_объектов);

КонецПроцедуры
1С8.3 и GIS ToolKit Active: Выделение объектов, Интеграция GIS ToolKit Active в 1С8.3 Выделение объектов
 
[QUOTE]Andrey Gheleznyakov написал:
[QUOTE][URL=/forum/user/18451/]Анатолий Рогатнев[/URL] написал:
Внутри отрисованного объекта выделить (показать на карте), находящиеся там, объекты карты.[/QUOTE]
Процедура ВыделитьПоОбластиНажатие(Элемент)
//Пример группового выделения нескольких объектов по области, заданной другим объектом.
карта1 = ЭтаФорма.ЭлементыФормы.axMapView1;

карта1.Rendering = Ложь; // запретим переисовку, чтобы не моргало изображение карты на экране

карта1.ViewScale = 25000;

   название_карты = "Ногинский район";        

// найдем объект внутри которого ищем
   карта_объект = ЭтаФорма.ЭлементыФормы.axMapObj1;
Если карта_объект.SeekObject(название_карты, 38010) = 0 Тогда // кавртал редко застроенный
Сообщить("Объект с номером 38010 не найден");
   Возврат;
КонецЕсли;
карта_объект.Center();

   // код ниже для поиска, а мы будем выделять
//ПоискПоКарте = ЭтаФорма.ЭлементыФормы.axMapFind1;
//ПоискПоКарте.Active = Ложь;
//ПоискПоКарте.MapSelect.SiteNumber = 0;   // ищем в первой - основной карте
//ПоискПоКарте.MapSelect.UnselectSeekArea(-1);  // сбросим область если была
//ПоискПоКарте.FindPoint = Ложь;            
//ПоискПоКарте.Active = Истина;
//ПоискПоКарте.First() = Истина;

   // установим область по найденному ранее объекту
карта1.ViewSelect.ClearAll();
// установим фильтр для всех доступных карт,
// по контуру объекта карта_объект
// по расстоянию от границы = 0
// с учетом уже установленных фильтров в MаpSelect (можно задать только линейные, например) =1
// внутри области = 0
// без учета видимости = 0
// операция для выделения = 1
iret = карта1.ViewSelect.SelectSeekArea(-1, карта_объект.C_CONTAINER, 0, 1, 0, 0, 1);
Если iret = 0 Тогда
Сообщить("Область поиска не установлена");
    карта1.Rendering = Истина;
   Возврат;
КонецЕсли;

clRed  = 255;
   карта1.SetViewSelectedEx(Истина, clRed);

   // разрешим перерисовку
карта1.Rendering = Истина;

КонецПроцедуры[/QUOTE]
1С8.3 и GIS ToolKit Active: Выделение объектов, Интеграция GIS ToolKit Active в 1С8.3 Выделение объектов
 
[QUOTE]Анатолий Рогатнев написал:
Внутри отрисованного объекта выделить (показать на карте), находящиеся там, объекты карты.[/QUOTE]
Процедура ВыделитьПоОбластиНажатие(Элемент)
//Пример группового выделения нескольких объектов по области, заданной другим объектом.
карта1 = ЭтаФорма.ЭлементыФормы.axMapView1;

карта1.Rendering = Ложь; // запретим переисовку, чтобы не моргало изображение карты на экране

карта1.ViewScale = 25000;

   название_карты = "Ногинский район";        

// найдем объект внутри которого ищем
   карта_объект = ЭтаФорма.ЭлементыФормы.axMapObj1;
Если карта_объект.SeekObject(название_карты, 38010) = 0 Тогда // кавртал редко застроенный
Сообщить("Объект с номером 38010 не найден");
   Возврат;
КонецЕсли;
карта_объект.Center();

   // код ниже для поиска, а мы будем выделять
//ПоискПоКарте = ЭтаФорма.ЭлементыФормы.axMapFind1;
//ПоискПоКарте.Active = Ложь;
//ПоискПоКарте.MapSelect.SiteNumber = 0;   // ищем в первой - основной карте
//ПоискПоКарте.MapSelect.UnselectSeekArea(-1);  // сбросим область если была
//ПоискПоКарте.FindPoint = Ложь;            
//ПоискПоКарте.Active = Истина;
//ПоискПоКарте.First() = Истина;

   // установим область по найденному ранее объекту
карта1.ViewSelect.ClearAll();
// установим фильтр для всех доступных карт,
// по контуру объекта карта_объект
// по расстоянию от границы = 0
// с учетом уже установленных фильтров в MаpSelect (можно задать только линейные, например) =1
// внутри области = 0
// без учета видимости = 0
// операция для выделения = 1
iret = карта1.ViewSelect.SelectSeekArea(-1, карта_объект.C_CONTAINER, 0, 1, 0, 0, 1);
Если iret = 0 Тогда
Сообщить("Область поиска не установлена");
    карта1.Rendering = Истина;
   Возврат;
КонецЕсли;

clRed  = 255;
   карта1.SetViewSelectedEx(Истина, clRed);

   // разрешим перерисовку
карта1.Rendering = Истина;

КонецПроцедуры
1С8.3 и GIS ToolKit Active: Выделение объектов, Интеграция GIS ToolKit Active в 1С8.3 Выделение объектов
 
По всем вопросам были примеры на форуме, в инсталляции.
[QUOTE]Анатолий Рогатнев написал:
Мышью отрисовать область (площадной объект - виртуальный).[/QUOTE]
// Создание объекта карты с выбором его типа (класса) из классификатора
// можно выбрать любой тип - точечный, линейный, площадной
Процедура СоздатьОбъектНажатие(Элемент)
   карта1 = ЭтаФорма.ЭлементыФормы.axMapView1;
Если карта1.Active  = Ложь Тогда
Сообщить("Карта не открыта");
Возврат;
КонецЕсли;

   // получим объект управления картой из списка карт
   mapsite = ЭтаФорма.ЭлементыФормы.axMapView1.MapSites.Item_get(0);
   Если mapsite.GetSiteEditFlag() = 0 Тогда
       Сообщить("Редактирование на карте запрещено");                        
Возврат;
   КонецЕсли;
           
Если ЭтаФорма.ЭлементыФормы.УправлениеКартой.Заголовок = "Управление Активно" Тогда
// Остановить стандартное управление местоположением карты
       УправлениеКартойНажатие(Элемент);
КонецЕсли;

карта_ред = ЭтаФорма.ЭлементыФормы.axMapEditMetric;    
карта_ред.StopAction();  // если было активно, то остановить
карта_ред.cMapView = карта1.C_CONTAINER;

   выбортип1 = ЭтаФорма.ЭлементыФормы.axMapSelectObjectRsc;
выбортип1.cMapView = карта1.C_CONTAINER;

   карта_объект = ЭтаФорма.ЭлементыФормы.axMapObj1;
карта_объект.cMapView = карта1.C_CONTAINER;  

карта_ред.cMapObj = карта_объект.C_CONTAINER;

координата = ЭтаФорма.ЭлементыФормы.axMapPoint1;
координата.cMapView = карта1.C_CONTAINER;  
карта_ред.cMapPoint = координата.C_CONTAINER;;

Если выбортип1.ExecuteForMapObj(карта_объект.C_CONTAINER,  Истина) = Ложь Тогда
Возврат;
КонецЕсли;

карта_ред.MetEditMode = 1;

карта1.ViewScale = 25000;

карта_ред.StartAction();  

КонецПроцедуры

// Создание точечного объекта карты, когда уже известен его классификационный код в классификаторе *.rsc
Процедура СоздатьОбъектТочечныйНажатие(Элемент)
   карта1 = ЭтаФорма.ЭлементыФормы.axMapView1;
Если карта1.Active  = Ложь Тогда
Сообщить("Карта не открыта");
Возврат;
КонецЕсли;

   // получим объект управления картой из списка карт
   mapsite = ЭтаФорма.ЭлементыФормы.axMapView1.MapSites.Item_get(0);
   Если mapsite.GetSiteEditFlag() = 0 Тогда
       Сообщить("Редактирование на карте запрещено");                        
Возврат;
   КонецЕсли;
           
Если ЭтаФорма.ЭлементыФормы.УправлениеКартой.Заголовок = "Управление Активно" Тогда
// Остановить стандартное управление местоположением карты
       УправлениеКартойНажатие(Элемент);
КонецЕсли;

карта_ред = ЭтаФорма.ЭлементыФормы.axMapEditMetric;    
карта_ред.StopAction();  // если было активно, то остановить
карта_ред.cMapView = карта1.C_CONTAINER;

   выбортип1 = ЭтаФорма.ЭлементыФормы.axMapSelectObjectRsc;
выбортип1.cMapView = карта1.C_CONTAINER;

   карта_объект = ЭтаФорма.ЭлементыФормы.axMapObj1;
карта_объект.cMapView = карта1.C_CONTAINER;  

карта_ред.cMapObj = карта_объект.C_CONTAINER;

координата = ЭтаФорма.ЭлементыФормы.axMapPoint1;
координата.cMapView = карта1.C_CONTAINER;  
карта_ред.cMapPoint = координата.C_CONTAINER;;

//создадим пустую метрику  
IDDOUBLE2 = 2147254268; // = $7FFC7FFCс плавающей запятой двойной точностью          
OL_MARK   = 2;        // точечный объект
Тип_объекта = 31632000; // классификационный код объекта
карта_объект.CreateObject(0, IDDOUBLE2, Ложь, 1, Тип_объекта, OL_MARK);

   emCreate = 1; // создание метрики
карта_ред.MetEditMode = emCreate;

карта1.ViewScale = 25000;

карта_ред.StartAction();  

КонецПроцедуры

При успешном завершении редактирования
// обработка положительного окончания редактирования
Процедура axMapEditMetricOnExecute(Элемент)
// запишем объект в карту
Если ЭтаФорма.ЭлементыФормы.axMapObj1.Commit() = 0 Тогда
Сообщить("Запись объекта не выполнена");                        

// получим объект управления картой из списка карт
       mapsite = ЭтаФорма.ЭлементыФормы.axMapView1.MapSites.Item_get(0);
     Если mapsite.GetSiteEditFlag() = 0 Тогда
   Сообщить("Редактирование на карте запрещено");                        
   КонецЕсли;

   Возврат;
КонецЕсли;

КонецПроцедуры

Создание объекта когда его тип уже известен, например точечный
// Создание точечного объекта карты, когда уже известен его классификационный код в классификаторе *.rsc
Процедура СоздатьОбъектТочечныйНажатие(Элемент)
   карта1 = ЭтаФорма.ЭлементыФормы.axMapView1;
Если карта1.Active  = Ложь Тогда
Сообщить("Карта не открыта");
Возврат;
КонецЕсли;

   // получим объект управления картой из списка карт
   mapsite = ЭтаФорма.ЭлементыФормы.axMapView1.MapSites.Item_get(0);
   Если mapsite.GetSiteEditFlag() = 0 Тогда
       Сообщить("Редактирование на карте запрещено");                        
Возврат;
   КонецЕсли;
           
Если ЭтаФорма.ЭлементыФормы.УправлениеКартой.Заголовок = "Управление Активно" Тогда
// Остановить стандартное управление местоположением карты
       УправлениеКартойНажатие(Элемент);
КонецЕсли;

карта_ред = ЭтаФорма.ЭлементыФормы.axMapEditMetric;    
карта_ред.StopAction();  // если было активно, то остановить
карта_ред.cMapView = карта1.C_CONTAINER;

   выбортип1 = ЭтаФорма.ЭлементыФормы.axMapSelectObjectRsc;
выбортип1.cMapView = карта1.C_CONTAINER;

   карта_объект = ЭтаФорма.ЭлементыФормы.axMapObj1;
карта_объект.cMapView = карта1.C_CONTAINER;  

карта_ред.cMapObj = карта_объект.C_CONTAINER;

координата = ЭтаФорма.ЭлементыФормы.axMapPoint1;
координата.cMapView = карта1.C_CONTAINER;  
карта_ред.cMapPoint = координата.C_CONTAINER;;

//создадим пустую метрику  
IDDOUBLE2 = 2147254268; // = $7FFC7FFCс плавающей запятой двойной точностью          
OL_MARK   = 2;        // точечный объект
Тип_объекта = 31632000; // классификационный код объекта
карта_объект.CreateObject(0, IDDOUBLE2, Ложь, 1, Тип_объекта, OL_MARK);

   emCreate = 1; // создание метрики
карта_ред.MetEditMode = emCreate;

карта1.ViewScale = 25000;

карта_ред.StartAction();  

КонецПроцедуры

Редактирование существующего объекта карты
//  редактирование контура объекта карты
Процедура РедактироватьКонтурНажатие(Элемент)

карта1 = ЭтаФорма.ЭлементыФормы.axMapView1;
Если карта1.Active  = Ложь Тогда
Сообщить("Карта не открыта");
Возврат;
КонецЕсли;

Если ЭтаФорма.ЭлементыФормы.УправлениеКартой.Заголовок = "Управление Активно" Тогда
// Остановить стандартное управление местоположением карты
       УправлениеКартойНажатие(Элемент);
КонецЕсли;

карта_объект = ЭтаФорма.ЭлементыФормы.axMapObj1;
карта_объект.cMapView = карта1.C_CONTAINER;  

карта_ред = ЭтаФорма.ЭлементыФормы.axMapEditMetric;    
карта_ред.StopAction();  

карта_ред.cMapView = карта1.C_CONTAINER;  
карта_ред.cMapObj = карта_объект.C_CONTAINER;  

координата = ЭтаФорма.ЭлементыФормы.axMapPoint1;
координата.cMapView = карта1.C_CONTAINER;  
карта_ред.cMapPoint = координата.C_CONTAINER;;

//type  Описан в исходных текстах source.zip файл
//  TxEditMode = TOleEnum;
//const
//  emEdit = $00000000;
//  emCreate = $00000001;
//  emCreateSubj = $00000002;
//  emMove = $00000003;
//  emAddPoint = $00000004;
//  emRemPoint = $00000005;
//  emGetPoint = $00000006;
//  emGetRealPoint = $00000007;
//  emMoveGroup = $00000008;

   emEdit = 0;
карта_ред.MetEditMode = emEdit;              

//0 vsDefault настройки отображения по умолчанию (инверсное рисование)
//1 vsRealView отображение реальным видом из классифкатора
//2 vsRealWithNodes отображение реальным видом из классифкатора с выделением узлов
//3 vsContourWithNodes отображение контуром с выделением узлов

карта_ред.EditViewStyle = 3;

// найдем редактируемый объект
карта_объект.SeekObject("Ногинский район", 104007); // автодорога
Если карта_объект.SeekObject("Ногинский район", 104007) = 0 Тогда
Сообщить("Объект с номером 104007 не найден");
   Возврат;
КонецЕсли;

// способы выделения объектов карты
   OS_NOVIEW = 0; // не отображать
   OS_NORMAL = 1; // отображать обычным знаком из классификатора
   OS_SELECT = 2; // выделить согласно настройкам MapObj

карта1.ViewScale = 25000;

   карта_объект.Center(); // сдвинем объект в центр

карта_ред.StartAction();  

КонецПроцедуры  
Изменено: Andrey Gheleznyakov - 08.11.2023 15:00:24
GIS ToolKit Active Создание объекта карты в 1С
 
На сайте доступна новая инсталляция, в которую вошел пример использования для 1С8.3.

В состав примера входят:
- 1Cv8_3_23_Пример_GIS_ToolKIt_Active.dt - информационная база данных версии 8.3.23;
- 1Cv8_3_23_Пример_GIS_ToolKIt_Active.cf - конфигурация для версии не ниже 8.3.20.

  В примере используются следующие компоненты:
- axMapView - компонент доступа к карте и ее отображения;
- axMapGisServer - компонент многопользовательского доступа к картам на ГИС Сервере;
- axMapManager - компонент управления местоположением карты масштабом отображения,
  просмотра информации об объекте карты;
- axMapFind - компонент поиска объектов карты;
- axMapPoint - компонент пересчета координат;
- axMapEditMetric - компонент редактирования метрики объекта карты;
- axMapObj - компонент параметров (описание, метрика, атрибуты) объекта карты;
- axMapSelectObjectRsc - компонент выбора типа (класса) объекта карты из классификатора с диалогом.
GIS ToolKit Active Создание объекта карты в 1С
 
Например, перед стартом режима MapEditMetric надо вызвать MapManager.StopAction, а после окончания редактирования надо заново активизировать MapManager.StartAction.
GIS ToolKit Active Создание объекта карты в 1С
 
В один и тот же момент времени должен быть активен либо MapManager, либо MapEditMetric. У Вас это так?
1С8.3 и GIS ToolKit Active: Выделение объектов, Интеграция GIS ToolKit Active в 1С8.3 Выделение объектов
 
По умолчанию режим выбора в точке неактивен. Вы сами активизируете его в компоненте axMapManager. Когда не нужно - отключайте.
GIS ToolKit Active Создание объекта карты в 1С
 
Про точность - Вам решать. Не знаю конкретных задач, поэтому тип метрики с запасом. Поставьте с обычной точностью.

По части стрелки - скорее всего активен компонент MapManager.
Страницы: Пред. 1 ... 4 5 6 7 8 9 10 11 12 13 14 ... 280 След.



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности