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

aiMapSelect

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1 2 След.
RSS
aiMapSelect, не работает aiMapSelect
 
Доброго времени суток пишу на форму по поводу того что я хочу использовать aiMapSelect от axMapFind
В Дальнейшим я хочу использовать компонент axMapNet

   QPointer<QAxWidget> axMapFind = new QAxWidget(AX_MapFind);
   QPointer<QAxWidget> cMapObj = new QAxWidget(AX_MapObj);
   cMapObj->setProperty("cMapView", m_axWidget->property("C_CONTAINER"));
   QPointer<QAxWidget> axMapPoint = new QAxWidget(AX_MapPoint);
   axMapPoint->dynamicCall("SetPlaceInp(TxPPLACE)", 2);
   cMapObj->dynamicCall("CreateObjectByExcode(int, int, int, int)",
                        0,
                        (int)GISToolkitObjects::TxMetricType::IDDOUBLE3,
                        0,
                        GISToolkitObjects::TxObjectLocal::OL_MARK);
   cMapObj->querySubObject("Metric")->dynamicCall("Append(int, IDispatch*)", 0, axMapPoint->property("C_CONTAINER"));
   QAxObject* aiMapSelect = axMapFind->querySubObject("cMapSelect");
   if (!aiMapSelect) {
       qDebug() << "Ошибка: не удалось получить контекст поиска (cMapSelect)";
       return;
   }
   axMapFind->setProperty("cMapView", m_axWidget->property("C_CONTAINER"));
   axMapFind->setProperty("cMapObj", cMapObj->property("C_CONTAINER"));
   const QMetaObject *meta = aiMapSelect->metaObject();
   qDebug() << "Методы aiMapSelect:";
   for (int i = meta->methodOffset(); i < meta->methodCount(); ++i) {
       QMetaMethod method = meta->method(i);
       qDebug() << method.methodSignature();
   }
   axMapFind->setProperty("Active", false);
   aiMapSelect->dynamicCall("Clear()");
   aiMapSelect->dynamicCall("ClearAll()");
   aiMapSelect->dynamicCall("ClearSampleAll()");
   aiMapSelect->dynamicCall("ClearSemantic()");
   aiMapSelect->dynamicCall("GetSeekSelect(int)", -1);
   aiMapSelect->dynamicCall("AllMaps",false);
   aiMapSelect->dynamicCall("KeyObject_set(QString,bool)","L76", true);
   aiMapSelect->dynamicCall("SetSelect()");
   bool activeSet = axMapFind->setProperty("Active", true);
   QVariant objCount = aiMapSelect->dynamicCall("SelectObjectCount(int)", -1);
   int count = objCount.toInt();
   qDebug() << "SelectObjectCount:" << count;
   qDebug() << "ActiveSet:" << axMapFind->property("Active");
   if (activeSet) {
       qDebug() << "Начальный объект:" << cMapObj->property("ObjName").toString();
   }
   if (axMapFind->property("Bof").toBool() && axMapFind->property("Eof").toBool())
   {
       qDebug() << "Поиск не вернул ни одного объекта.";
   }
   else {
       while (!axMapFind->property("Eof").toBool())
       {
           QString objName = cMapObj->property("KeyName").toString();
           qDebug() << "Найден объект:" << objName;
           // Переходим к следующему найденному объекту
           axMapFind->dynamicCall("Next()");
       }
       qDebug() << "Достигнут конец списка найденных объектов (Eof = true).";
   }
данный код выдает
"SelectObjectCount: 0
ActiveSet: QVariant(bool, true)
Начальный объект: "ЛИНИЯ"
Поиск не вернул ни одного объекта."

я не могу понять в чем дело  
 
Цитата
Никита Овчаренко написал:
Доброго времени суток пишу на форму по поводу того что я хочу использовать aiMapSelect от axMapFind В Дальнейшим я хочу использовать компонент axMapNet
Добрый день!
Просьба уточнить, в какой программе (под какую OC) и версии работаете?
 
Цитата
Елена Кузнецова написал:
Цитата
Никита Овчаренко написал:
Доброго времени суток пишу на форму по поводу того что я хочу использовать aiMapSelect от axMapFind В Дальнейшим я хочу использовать компонент axMapNet
Добрый день!
Просьба уточнить, в какой программе (под какую OC) и версии работаете?
QtCreator -> Qt 6.2.2 ->  mingw Windows 11
 
Цитата
Никита Овчаренко написал:
QtCreator -> Qt 6.2.2 ->  mingw Windows 11
Добрый день!
Просьба написать полное наименование программы Панорама, которую используете и какая версия.

Спасибо!
 
Цитата
Елена Кузнецова написал:
Цитата
Никита Овчаренко написал:
QtCreator -> Qt 6.2.2 ->  mingw Windows 11
Добрый день!
Просьба написать полное наименование программы Панорама, которую используете и какая версия.

Спасибо!
Добрый день!
(GisToolActive 5Free) Инструментарий разработчика ГИС-приложений Active Free  на основе COM технологии v.15.0.6.0
 
Добрый день!

Цитата
Никита Овчаренко написал:
aiMapSelect->dynamicCall("AllMaps",false);

AllMaps = false
после этого все карты выключены из поиска

Чтобы искать по отдельным картам, надо их включить
aiMapSelect.MapSites_set(номер, true)

Далее, когда Вы задаете условия (например, ключ="L76"), следует помнить, что это условие задается для одной конкретной карты, указанной в свойстве SiteNumber.
Если требуется задать такое условие нескольким картам, то надо это выполнить поочередно к каждой.

И наконец, опрашивать MapObj бесполезно, если поиск ничего не вернул. MapObj при этом будет содержать свое старое значение или пустой объект.
 
Цитата
Денис Вицко написал:
Добрый день!

Цитата
Никита Овчаренко написал:
aiMapSelect->dynamicCall("AllMaps",false);

AllMaps = false
после этого все карты выключены из поиска

Чтобы искать по отдельным картам, надо их включить
aiMapSelect.MapSites_set(номер, true)

Далее, когда Вы задаете условия (например, ключ="L76"), следует помнить, что это условие задается для одной конкретной карты, указанной в свойстве  SiteNumber .
Если требуется задать такое условие нескольким картам, то надо это выполнить поочередно к каждой.

И наконец, опрашивать MapObj бесполезно, если поиск ничего не вернул. MapObj при этом будет содержать свое старое значение или пустой объект.
Добрый день!
внес изменения  в код теперь SelectObjectCount: 13549 и MapObj выводит все объекты карты т.е поиск конкретного объекта не применился как я могу это исправить и правильно ли я понял KeyObject_set что в классификаторе он является "Ключ" ?  
 
Цитата
Никита Овчаренко написал:
правильно ли я понял KeyObject_set что в классификаторе он является "Ключ" ?  

да, все верно


Цитата
Никита Овчаренко написал:
поиск конкретного объекта не применился

Скорее причина в том, что остальные объекты не исключены из поиска.
Общий подход такой: выборка объектов не ограничена и изначально всё включено.
Такие правила действуют для всех свойств.

Чтобы искать один тип объектов по ключу условного знака, надо сначала выключить все, затем включить нужный.

Примерно так:
Код
aiMapSelect.MapSites_set("", false);
aiMapSelect.MapSites_set(номер, true)
 
Добрый вечер
void GISToolkitMapNet::setupSearchConditions()
{
   QPointer<QAxWidget> axMapFind = new QAxWidget(AX_MapFind);
   QPointer<QAxWidget> cMapObj = new QAxWidget(AX_MapObj);
   cMapObj->setProperty("cMapView", m_axWidget->property("C_CONTAINER"));
   QPointer<QAxWidget> axMapPoint = new QAxWidget(AX_MapPoint);
   axMapPoint->dynamicCall("SetPlaceInp(TxPPLACE)", 2);
   cMapObj->dynamicCall("CreateObjectByExcode(int, int, int, int)",
                        0,
                        (int)GISToolkitObjects::TxMetricType::IDDOUBLE3,
                        0,
                        GISToolkitObjects::TxObjectLocal::OL_MARK);
   cMapObj->querySubObject("Metric")->dynamicCall("Append(int, IDispatch*)", 0, axMapPoint->property("C_CONTAINER"));
   QAxObject* aiMapSelect = axMapFind->querySubObject("cMapSelect");
   if (!aiMapSelect) {
       qDebug() << "Ошибка: не удалось получить контекст поиска (cMapSelect)";
       return;
   }
   axMapFind->setProperty("cMapView", m_axWidget->property("C_CONTAINER"));
   axMapFind->setProperty("cMapObj", cMapObj->property("C_CONTAINER"));
   const QMetaObject *meta = aiMapSelect->metaObject();
   qDebug() << "Методы aiMapSelect:";
   for (int i = meta->methodOffset(); i < meta->methodCount(); ++i) {
       QMetaMethod method = meta->method(i);
       qDebug() << method.methodSignature();
   }
   axMapFind->setProperty("Active", false);
   QVariant objCount = aiMapSelect->dynamicCall("SelectObjectCount(int)",-1);
   int count = objCount.toInt();
   qDebug() << "SelectObjectCount:" << count;


   aiMapSelect->dynamicCall("ClearAll()");
   qDebug() << "AllMaps:" << aiMapSelect->property("AllMaps");

   aiMapSelect->dynamicCall("SetSiteNumber(int)",1);
   aiMapSelect->dynamicCall("Excode_set(int,TxObjectLocal,bool)",-1,0, false).toBool();
   aiMapSelect->dynamicCall("Incode_set(int,bool)",-1, false).toBool();
   aiMapSelect->dynamicCall("KeyObject_set(QString,bool)","", false).toBool();
   aiMapSelect->dynamicCall("KeyObject_set(QString,bool)","P213", true);
   QVariant isEnabled = aiMapSelect->dynamicCall("KeyObject_get(QString)", "P213");
   qDebug() << "МОЙ ОБЪЕКТ включен:" << isEnabled.toBool();
   qDebug() << "Count: "  << aiMapSelect->dynamicCall("SelectObjectCount(int)",-1).toInt();
   bool activeSet = axMapFind->setProperty("Active", true);
   qDebug() << "ActiveSet:" << axMapFind->property("Active");
   if (activeSet) {
       qDebug() << "Начальный объект:" << cMapObj->property("ObjName").toString();
   }
   if (axMapFind->property("Bof").toBool() && axMapFind->property("Eof").toBool())
   {
       qDebug() << "Поиск не вернул ни одного объекта.";
   }
   else {
       while (!axMapFind->property("Eof").toBool())
       {
           QString objName = cMapObj->property("KeyName").toString();
           qDebug() << "Найден объект:" << objName;
           axMapFind->dynamicCall("Next()");
       }
   }
   qDebug() << "Count1: "  << aiMapSelect->dynamicCall("SelectObjectCount(int)",-1).toInt();
   qDebug() << aiMapSelect->dynamicCall("IsSample_get(int)",1);
}

aiMapSelect->dynamicCall("KeyObject_set(QString,bool)","", false).toBool();
aiMapSelect->dynamicCall("KeyObject_set(QString,bool)","P213", true);
не работает я получаю Count1:  13570 в SelectObjectCount
если я правильно понял я должен получить кол-во объектов P213
 
Возможно у Вас открыто несколько карт. В этой ситуации надо вызывать SelectObjectCount(int)",-1) не с -1, а с номером карты, если хотите подсчитать количество объектов на одной карте.
Нумерация карт начинается с 0.
Изменено: Andrey Gheleznyakov - 03.03.2025 09:07:56
Страницы: 1 2 След.
Читают тему (гостей: 1)



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

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