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

Денис Вицко (Все сообщения пользователя)

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

Страницы: Пред. 1 ... 3 4 5 6 7 8 9 10 11 12 13 ... 142 След.
Раздел ЧС на химически опасном объекте
 
Добрый день!

Спасибо за сообщение!

[QUOTE]korencheg koren написал:
1. Невозможно ввести отрицательную температуру воздуха.[/QUOTE]
Это некорректная работа элемента ввода данных.
Методика позволяет выполнять расчеты в температурном диапазоне от -40 до +40 градусов
Ошибку поправили.

[QUOTE]korencheg koren написал:
2. При скорости ветра более 4 м/с выдается сообщение об ошибке[/QUOTE]
Скорость выше4 м/с не соответствует заданной степени вертикальной устойчивости.
Скорости выше 4 м/с могут быть только при изотермии.
Сообщение об ошибке скорректируем.

Исправления будут доступны в одной из следующих сборках ГИС Панорама 15, о чем служба технической поддержки КБ "Панорама" дополнительно сообщит в данной теме.
Как отрисовать объект из классификатора
 
Добрый день!

[QUOTE]_Alex_ написал:
По сути мне нужны данные по объекту из классификатора, чтобы потом отправить на отрисовку, или что-то в таком духе.[/QUOTE]

Для этого достаточно создать объект (mapCreateObject), заполнить ему метрику и зарегистрировать его нужным условным знаком из классификатора (mapRegisterObject)
и отрисовать:

[CODE] // Отобразить отдельный объект карты в пределах фрагмента
// в условных знаках карты
// Может использоваться для вывода шаблонов объектов
// hmap - идентификатор открытых данных
// hdc   - идентификатор контекста устройства вывода,
// rect  - координаты фрагмента карты (Draw)
// info - идентификатор объекта карты в памяти
// Корректно работает с большими изображениями под Windows95 и NT,
// При ошибке в параметрах возвращает ноль
// Размер картинки, рисуемой за один вызов, не более
// текущих размеров экрана, иначе - см. PaintToDib,PaintToImage...
// alpha - флаг использования альфа канала 0 - не использовать 1 - использовать

_MAPIMP long int _MAPAPI mapPaintObject95Ex(HMAP hmap, HDC hdc, RECT *rect,  HOBJ info, long int alpha);[/CODE]

Сохранять объект на карту для этого не требуется. По завершении использования не забыть удалить объект из памяти (mapFreeObject).



[QUOTE]_Alex_ написал:
Просто нужно научится правильно доставать готовую структуру объекта, чтобы потом её использовать.[/QUOTE]

Не сказал бы, что это будет просто.
Объекты, описанные в классификаторе, - это не простые примитивы, а набор таких примитивов, каждый из которых может иметь свои функции и параметры отрисовки. При этом отрисовка может выполняться в том числе и "снаружи" - с помощью пользовательских библиотек *.IML.
Какие-то объекты могут представлять из себя серию условных знаков, то есть менять свой вид (включая функции и параметры отрисовки) в зависимости от значения определенных семантик, и так далее.
Поэтому проще и надежнее предоставить ГИС-ядру возможность отрисовать объект, чем самостоятельно пытаться это повторить.

Но, если есть желание погрузиться в эту тему, то смотрите функции:
[CODE]
 // Запросить количество примитивов в параметрах отображения объекта по
 // внутреннему коду объекта и виду отображения
 // viewtype: 0 - экранный, 1 - принтерный
 // hRsc - идентификатор классификатора карты
 // incode - внутренний код объекта
 // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapGetRscPrimitiveCount(HRSC hRsc, long int incode, long int viewtype = 0);

 // Запросить номер функции отображения примитива по порядковому
 // номеру примитива в параметрах отображения объекта,
 // внутреннему коду объекта и виду отображения
 // viewtype: 0 - экранный, 1 - принтерный
 // hRsc - идентификатор классификатора карты
 // incode - внутренний код объекта (номер по порядку)
 // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapGetRscPrimitiveFunction(HRSC hRsc, long int incode, long int number, long int viewtype = 0);

 // Запросить длину параметров примитива по порядковому
 // номеру примитива в параметрах отображения объекта,
 // внутреннему коду объекта и виду отображения
 // viewtype: 0 - экранный, 1 - принтерный
 // hRsc - идентификатор классификатора карты
 // incode - внутренний код объекта (номер по порядку)
 // number - номер примитива
 // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapGetRscPrimitiveLength(HRSC hRsc, long int incode, long int number, long int viewtype = 0);

 // Запросить адрес параметров примитива по порядковому
 // номеру примитива в параметрах отображения объекта,
 // внутреннему коду объекта и виду отображения
 // viewtype: 0 - экранный, 1 - принтерный
 // hRsc - идентификатор классификатора карты
 // incode - внутренний код объекта (номер по порядку)
 // number - номер примитива
 // При ошибке возвращает ноль

_MAPIMP const char * _MAPAPI mapGetRscPrimitiveParameters(HRSC hRsc, long int incode, long int number,
                                                         long int viewtype = 0);[/CODE]

Отдельные примеры частных случаев применения этих функций можно посмотреть в [URL=https://gisinfo.ru/download/?id=310]SDK15[/URL] (поиском функций по исходным текстам).
1С8.3 и GIS ToolKit Active: Выделение объектов, Интеграция GIS ToolKit Active в 1С8.3 Выделение объектов
 
[QUOTE]Анатолий Рогатнев написал:
Как только добавляю еще одну карту в окно 1С8.3, в эту переменную выводится данные, похоже  по обеим картам. Отбор слетает !  [/QUOTE]

Отбор не слетает, а выводит объекты согласно заданных условий. Для добавленной карты не заданы никакие ограничения, поэтому в выборку попадут все объекты с нее.

[B]Справочная система[/B] [URL=https://help.gisserver.ru/_extra/axGisTool/axGisTool/aimapselect.html]об этом говорит следующее[/URL]:
[QUOTE]
При работе с aiMapSelect необходимо учитывать, что в axcMapView может быть открыто несколько карт. Каждая открытая карта может в свою очередь содержать собственный набор допустимых критериев поиска. Объект axMapSelect управляет сразу всем набором карт, поэтому практически все свойства класса определяют параметры той карты, которая задана свойством SiteNumber, либо той, которая явно указана в качестве параметра. Некоторые свойства и методы работают сразу со всем списком карт, например: ClearAll. Объект работает с картой указанной в свойстве SiteNumber.

По умолчанию, или после выполнения команды ClearAll, все объекты карты в axMapSelect доступны для поиска и отображения.
[/QUOTE]

За включение и выключение из поиска карты отвечает свойство [URL=https://help.gisserver.ru/_extra/axGisTool/axGisTool/aimapselect_mapsites.html]aiMapSelect.MapSites[/URL].
1С8.3 и GIS ToolKit Active: Выделение объектов, Интеграция GIS ToolKit Active в 1С8.3 Выделение объектов
 
Добрый день!

[QUOTE]Анатолий Рогатнев написал:
Однако обычно требуется выделение площадным объектом объектов одного типа  карты (колодец водопроводный, строение  с адресными данными, пожарный гидрантов  и т.д. ).[/QUOTE]

[QUOTE] ПоискПоКарте = ЭтаФорма.ЭлементыФормы.axMapFind1;
ПоискПоКарте.Active     = Ложь;
ПоискПоКарте.FindPoint  = Ложь;  
ПоискПоКарте.cMapSelect.ClearAll();  

// код ниже для поиска, а мы будем выделять
ПоискПоКарте.cMapSelect.ClearAll();
ПоискПоКарте.cMapSelect.SiteNumber = 0;   // ищем в первой - основной карте
ПоискПоКарте.cMapSelect.UnselectSeekArea(-1);  // сбросим область если была    

[B]// Для примера включим в поиск только объекты с локализацией "векторный" и "подпись"[/B]
ПоискПоКарте.cMapSelect.Local_set(-1, Ложь);
ПоискПоКарте.cMapSelect.Local_set(4, Истина);
ПоискПоКарте.cMapSelect.Local_set(3, Истина);

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

ПоискПоКарте.Active = Истина;
[/QUOTE]

[B]Приведенный выше пример как раз и показывает выделение не всех объектов, а по ограничению, заданному предварительно в MapSelect.[/B]

Пример демонстрирует ограничение выбираемых объектов просто по локализации.
Вы же можете настроить параметры отбора объектов более детально.
Конкретно за ограничение по определенным кодам классификатора отвечает свойство [URL=https://help.gisserver.ru/_extra/axGisTool/axGisTool/aimapselect_excode.html]aiMapSelect.Excode[/URL].

Подробнее - смотрите в документации/справочной системе GIS ToolKit Active.
Настройка MapEditMetric, Как более детально настроить EditRegime, и прочие настройки LineBlank, LineColor, LineDash
 
[QUOTE]Andrey Prohorov написал:
День добрый, можно ли более детально настроить параметры MapEditMetric.EditRegime := erTakeRealPoint; (расстояния до привязки курсора к точке и тд)?[/QUOTE]

Добрый день!

Расстояние до привязки курсора к точке в настоящее время извне не устанавливается.
Оно определено 3 пикселями экрана (расстояние на местности варьируется в зависимости от масштаба отображения карты).

[QUOTE]Andrey Prohorov написал:
Вместо изменения цвета, длины и ширины линии, соединяющей текущее положение курсора мыши с текущей точкой на контуре объекта, меняется сам контур объекта, хотя при изменении подобных свойств у TGetMapPoint - все работает как положено.[/QUOTE]

Исправили.
Правки войдут в следующую сборку GIS ToolKit 15.
1С8.3 и GIS ToolKit Active: Выделение объектов, Интеграция GIS ToolKit Active в 1С8.3 Выделение объектов
 
[QUOTE]Анатолий Рогатнев написал:
Добрый день !
Ниже также не работает.[/QUOTE]

Добрый день!

Представленный вчера пример (конфигурация 1С) смотрели?
У Вас в нем выделение объектов работает?
1С8.3 и GIS ToolKit Active: Выделение объектов, Интеграция GIS ToolKit Active в 1С8.3 Выделение объектов
 
Добрый день!

Обновлен пример конфигурации 1C с формой карты на основе GIS ToolKit Active.
Будет в следующей сборке, пока прикладываю его тут.

Добавлен выбор объектов на карте с помощью прямоугольной рамки (выделение мышью по области).
Объекты выделяются на карте, плюс все найденные объекты перебираются и запрашиваются их характеристики.
То же самое сделано для поиска объектов внутри существующего объекта карты.

Добавлен вывод текущих координат положения мыши на карте.

Добавлено сохранение пути к последней открытой карте и восстановление ее при следующем запуске.
1С8.3 и GIS ToolKit Active: Выделение объектов, Интеграция GIS ToolKit Active в 1С8.3 Выделение объектов
 
[CODE]_axMapEditMetric.cMapObj = _axMapObj.C_CONTAINER;[/CODE]
После того, как отработает _axMapEditMetric, полученную метрику он заполнит в _axMapObj.
Поэтому дополнительно искать только что созданный объект не требуется, он у Вас уже есть и заполнен в _axMapObj.

[QUOTE]Анатолий Рогатнев написал:
После создания на карте, он не сохраняется ...[/QUOTE]

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

Общая ошибка в Вашем коде:
Вперемешку используются контексты поиска/выделения  _axMapFind.MapSelect и  _axcMapView.ViewSelect.
Это два отдельных объекта aiMapSelect, которые друг про друга ничего не знают.
1С8.3 и GIS ToolKit Active: Выделение объектов, Интеграция GIS ToolKit Active в 1С8.3 Выделение объектов
 
[QUOTE]Анатолий Рогатнев написал:
У меня  никак не получается  отбор по выделенной мышью произвольной области  в окне ГИС 1с8.3. Может быть я, этот созданный мышью площадной объект,  как -то  не так создаю (создается только метрика и  объект, как было сказано, не записывается в базу). Последующая  обработка данных  (вывод данных  отбора) показывает, что отбора нет - выводится все !    [/QUOTE]

Если Вы создаете объект и после этого не можете найти его на карте, то проблема либо в создании, либо в поиске.

1.
Если для создания объекта Вы используете компонент [URL=https://help.gisserver.ru/_extra/axGisTool/axGisTool/22j00.html]axMapEditMetric[/URL], надо понимать, что он сам объект не сохраняет на карту.
Решение о сохранении объекта принимаете Вы:
[QUOTE]
При успешном завершении редактирования (создания) метрики объекта, новая метрика присваивается объекту, на который настроен компонент axMapObj, затем вызывается событие OnExecute, свидетельствующее об успешном завершении процесса редактирования метрики и компонент переводиться в неактивный режим (вызывается метод StopAction). В противном случае метрика в объект не передается и событие OnExecute не вызывается.
[/QUOTE]

[QUOTE]При успешном завершении редактирования:

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

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

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

КонецПроцедуры[/QUOTE]


2.
[QUOTE]Анатолий Рогатнев написал:
Последующая  обработка данных  (вывод данных  отбора) показывает, что отбора нет -[B] выводится все[/B] ![/QUOTE]

Если в результат отбора объектов попадает всё, значит не заданы условия отбора - все объекты карты соответствуют условиям (которых нет).

Проверьте, как задаются условия поиска в axMapFind.
1С8.3 и GIS ToolKit Active: Выделение объектов, Интеграция GIS ToolKit Active в 1С8.3 Выделение объектов
 
Добрый день !

[QUOTE]Анатолий Рогатнев написал:
Пример коды  (  [URL=https://gisweb.ru/forum/messages/forum2/topic13632/message99570/13632-1s8.3-i-gis-toolkit-active_-vydelenie-obektov#message99570]#10[/URL] 26.10.2023 14:48:30 и в Инструментарии разработчика ГИС-приложений GIS ToolKit (версия 15.0.1.1, для платформ "x32" и "x64")) кода не решают задачу, в которой нужно...
[/QUOTE]

[U]Пример[/U] - это [U]примерная[/U] реализация отдельных возможностей отдельных компонентов.
Не стоит от примера ожидать, что он реализует весь функционал, который Вы хотите получить в своем приложении.

[QUOTE]Анатолий Рогатнев написал:
 1. Мышью отрисовать область (площадной объект - виртуальный).
 2. Внутри отрисованного объекта выделить (показать на карте), находящиеся там, объекты карты.
[/QUOTE]

Для выборки объектов карты, попадающих в заданную область, используется все тот же компонент поиска объектов [URL=https://help.gisserver.ru/_extra/axGisTool/axGisTool/22300.html]axMapFind[/URL].
Для установки условий предназначено свойство [URL=https://help.gisserver.ru/_extra/axGisTool/axGisTool/tmapfind_mapselect.html]axMapFind.cMapSelect[/URL].
Задать условие выборки по области можно методом [URL=https://help.gisserver.ru/_extra/axGisTool/axGisTool/aimapselect_selectseekarea.html]axMapFind.cMapSelect.SelectSeekArea[/URL], куда следует подать экземпляр [URL=https://help.gisserver.ru/_extra/axGisTool/axGisTool/22100.html]axMapObj[/URL], в котором должна быть заполнена метрика области поиска.

Задать метрику Вы можете:
а) воспользовавшись компонентом [URL=https://help.gisserver.ru/_extra/axGisTool/axGisTool/22j00.html]axMapEditMetric[/URL]
б) в случае с прямоугольной областью - воспользоваться компонентом [URL=https://help.gisserver.ru/_extra/axGisTool/axGisTool/axmapselectrect.html]axMapSelectRect[/URL]
в) самостоятельно (взяв координаты, например, из внешнего источника, либо самостоятельно обработав нажатия мыши и преобразовав их в координаты карты)

В случаях "б" и "в" метрику надо будет заполнить в экземпляр [URL=https://help.gisserver.ru/_extra/axGisTool/axGisTool/22100.html]axMapObj[/URL], вариант "а" сделает это сам (axMapObj должен быть настроен в axMapEditMetric).
До вызова метода сохранения объекта (CommitObject) объект, настроенный в axMapObj будет только в памяти (или как Вы сказали, "виртуальный").

Активация процесса получения выборки объектов по заданным условиям - [URL=https://help.gisserver.ru/_extra/axGisTool/axGisTool/tmapfind_active.html]axMapFind.Active[/URL]=Истина

[QUOTE]Анатолий Рогатнев написал:
 3. Просмотреть (в 1С8.3) список этих объектов (не понял где они могут быть сохранены  в ГИС Панорама ?).
 4. Далее производиться перебор объектов ГИС Панорама, видимо, по циклу. Часть семантических данных переносится в  документы 1С8.3 (это адресные данные и GUID объекта, может быть что- еще). GUID объекта ГИС Панорама в 1С8.3 необходим для последующего отыскания этого объекта на карте. [/QUOTE]

Это показано в примере.
Посмотреть список - это и есть перебрать объекты, полученные axMapFind - [URL=https://gisweb.ru/forum/messages/forum2/topic13632/message99714/13632-1s8.3-i-gis-toolkit-active_-vydelenie-obektov#message99714]цикл из примера описан тут[/URL].
На каждой итерации цикла в в экземпляре [URL=https://help.gisserver.ru/_extra/axGisTool/axGisTool/22100.html]axMapObj[/URL], с которым взаимодействует [URL=https://help.gisserver.ru/_extra/axGisTool/axGisTool/22300.html]axMapFind[/URL], будет содержать сведения о текущем объекте из полученного списка.

Получить доступ к семантикам объекта можно через свойство [URL=https://help.gisserver.ru/_extra/axGisTool/axGisTool/axmapobj_semantic.html]axMapObj.Semantic[/URL]
Страницы: Пред. 1 ... 3 4 5 6 7 8 9 10 11 12 13 ... 142 След.



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

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