Доброго времени суток пишу на форму по поводу того что я хочу использовать 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)
Начальный объект: "ЛИНИЯ"
Поиск не вернул ни одного объекта."
я не могу понять в чем дело
В Дальнейшим я хочу использовать компонент 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)
Начальный объект: "ЛИНИЯ"
Поиск не вернул ни одного объекта."
я не могу понять в чем дело
