RUS  ENG 

Проблема с доступом к COM API в ZuluGIS 10.0.0.9336 через макросы

Страницы: 1
RSS
Проблема с доступом к COM API в ZuluGIS 10.0.0.9336 через макросы, Проблема с доступом к COM API в ZuluGIS 10.0.0.9336 через макросы
 

У нас установлен ZuluGIS версии 10.0.0.9336. Согласно документации, система поддерживает создание макросов на VBScript/JScript с использованием COM-модели для доступа к данным и управления приложением.

Однако при попытке работы с COM-объектами в редакторе макросов возникают следующие проблемы:

  1. IntelliSense видит объявления объектов (Zulu, ActiveDocument, Documents), но при выполнении кода они не инициализируются

  2. Попытки явного создания COM-объектов завершаются ошибками:

    • new ActiveXObject("ZuluGIS.Application") - ошибка

    • new ActiveXObject("Zulu.Application") - ошибка

    • new ActiveXObject("POLITERM.ZuluGIS") - ошибка

  • Доступ к NetworkTools и методам сетевого анализа (FindWay, ShortWay) невозможен

  • Простой код var app = Application; выполняется, но объект не имеет свойств карты

    Что проверяли:

    • Редактор макросов открывается, IntelliSense работает

    • Карта открыта, активный слой выбран

    • Базовые функции типа Alert() работают

    • GUI инструменты "Топология → Найти путь" работают корректно

    Необходимость:
    Требуется автоматизировать процесс анализа газовой сети через макросы:

    1. Поиск маршрута между заданными точками газопровода

    2. Сбор информации по участкам найденного маршрута:

      • Собственник участка

      • Протяженность (длина)

      • Тип давления (ГВД I, ГВД II, ГСД, ГНД)

      • Материал трубопровода

      • Диаметр

  • Экспорт результатов в Excel с группировкой данных по собственникам

    Вопросы:

    1. Поддерживает ли наша версия ZuluGIS COM API для доступа к данным карты и семантическим атрибутам объектов?

    2. Какие настройки безопасности необходимо изменить для разрешения COM-доступа?

    3. Существует ли отдельная утилита или метод для скриптового доступа к NetworkTools и семантическим данным?

    4. Есть ли документация по рабочему API для доступа к атрибутам объектов (собственник, давление, материалы)?

    5. Требуется ли дополнительная лицензия или обновление для доступа к COM-модели и данным семантики?

    Конфигурация:

    • ZuluGIS 10.0.0.9336 u.x64

    • Редактор макросов доступен в меню Сервис

    • IntelliSense видит объекты, но они не работают при выполнении

  •  
    Добрый день. Вроде все работает.
    Код
    function Way()
    {
       //var L = new ActiveXObject('Zululib.Layer');
        //L.Open("D:\\Examples\\Thermo\\Kvartal\\teplosam.b00");
        
        var L = Application.ActiveMapDoc.Layers.Active;
        
        var Out = Application.OpenOutputChannel('Сообщения');        
        
        Out.Clear();   
        
        var Tools = L.NetworkTools
        
        Tools.AddFlag(1);
        Tools.AddFlag(117742);
        Tools.FindWay();
       
        for (i = 1; i <= Tools.Results.Count; i++) 
        {
          Out.PutLine(Tools.Results.Item(i));
        }
    }
    

    Документация по API есть:
    https://www.politerm.com/zuludoc/zuluax/index.html#objectmodel.html

    Сообщите, пожалуйста, телефон для связи на aaa@politerm.com Лучше голосом прокомментировать
     
    Здравствуйте! Спасибо за ответ!

    Попробовала запустить код ниже, выдал ошибку Failed to invoke procedure. (0x80020102)

    Код
    function AnalyzeGasRoute()
    {
    try {
    // Получаем активный слой
    var layer = Application.ActiveMapDoc.Layers.Active;
    
    // Открываем канал для сообщений
    var output = Application.OpenOutputChannel('Анализ маршрута');
    output.Clear();
    
    // Получаем NetworkTools
    var tools = layer.NetworkTools;
    
    // Очищаем предыдущие результаты
    tools.ClearResults();
    tools.ClearFlags();
    
    // ДОБАВЬТЕ СЮДА КОНКРЕТНЫЕ ID ВАШИХ УЗЛОВ:
    var startNodeId = 29494; // Замените на ID начального узла
    var endNodeId = 29496; // Замените на ID конечного узла
    
    output.PutLine("Поиск маршрута от " + startNodeId + " до " + endNodeId);
    
    // Ставим флажки
    tools.AddFlag(startNodeId);
    tools.AddFlag(endNodeId);
    
    // Ищем маршрут
    var routeFound = tools.FindWay();
    
    if (routeFound) {
    output.PutLine("Маршрут найден! Участков: " + tools.Results.Count);
    
    // Здесь будет сбор данных по участкам
    // (собственник, длина, тип давления и т.д.)
    
    } else {
    output.PutLine("Маршрут не найден");
    }
    
    } catch (error) {
    Alert("Ошибка: " + error.message);
    }
    }
    
    Слой активен, флажки расставлены, нужные айди введены.

    Телефон для связи +79243611912
    Изменено: Полина Труфанова - 19.11.2025 07:55:02
    Страницы: 1