Библиотека содержит 28 классов, которые сделают работу с Digitals (сборки 17.03.09) в среде программирования Delphi 7 удобной. О главном Novator и Novator 2 не совместимы. Библиотека была переписана полностью:
Экземпляры классов хранят данные только об уникальных идентификаторах объектов, что позволило:
уменьшить объём данных передаваемых через сервер команд Digitals, поскольку запрашиваются только необходимые данные;
сделать актуальными данные полученные/переданные через члены классов библиотеки.
Реализован механизм исключительных ситуаций, который позволяет отследить ошибки следующего характера:
обращение к несуществующему объекту;
отсутствие связи с сервером команд Digitals;
отсутствие файла шаблона;
повторное добавление элемента.
Так что появление непонятных ошибок практически исключено.
Реализован механизм событий, который поддерживает следующие события:
создание объекта;
удаление объекта;
изменение объекта;
начало сбора объекта;
конец сбора объекта;
выделение объектов;
добавление точки в объект;
удаление точки из объекта;
добавление объекта типа точка.
Добавлена документация, так что всю интересующую информацию ищите там (NOVATOR 2_0). Novator2 - 10-03-10.zip (288 KB)
Серьезный подход. Очевидно набор классов создавался для применения в реальных задачах. Поделитесь какие задачи вы решаете при помощи своего новатора? Насколько быстро это работает с большими картами?
На данный момент ни каких серьёзных задач решено не было. Novator 2 создавался как продолжение идеи Novator. Так что всё впереди.
Всё зависит от того что нужно сделать и как это реализовать. Но Novator 2 быстрее чем Novator. Вот небольшой пример работы с событиями (иногда бывают сбои, но над этим пока работаю). Example.zip (513 KB)
Да, вот только сейчас это стало менее актуальным, но и не без этого. В чём вся проблема - в координатах объекта, они формируют львиную долю текста описания объекта.
Как был раньше - изменять объект можно было командами Map.GetObject/Map.PutObject и остальными из этой серии. Принимать большой ответ сервера я смог, поэтому и команда Map.GetObject мог использовать. То есть получить объект можно было без проблем. А вот передать серверу команд большой текст у меня не получается (КТО ЗНАЕТ ПОДСКАЖИТЕ) поэтому использование команды Map.PutObject, с большими объектами, приводило к ошибка. Следовательно вносить изменения в большие объекты было нельзя.
Потом любимый скриптовый язык расширился… Появились команды из серии Map[n].Object[n].Point[n] и другие. Частично отпала необходимость в использовании команд Map.GetObject/Map.PutObject. Но нововведение (от 01.10.2008) не позволяли вставлять и удалять точки в объекте.
Потом (КОГДА ЗАКОНЧИЛСЯ ПЕРИОД ОБНОВЛЕНИЯ МОЕГО ДИГИТАЛСА) появились команды позволяющие вставлять и удалять точки из объекта - но увы, мне эти обновления были недоступны… К чему я всё это - если ты хочешь добавить или удалить точки из больших объектов Novator 2 этого не умеет. Зато изменить значения координат точек таких объектов уже можно.
Так что ждём пока начальство обновит Дигиталс или кто то подскажет как передать команду содержащую много текста в Дигиталс через TCP/IP.
для объектов:
получить/изменить слой объекта и его ID - Map.GetObjectHeader/Map.PutObjectHeader
получить/изменить координаты объекта и параметры Map[n].Object[n].Point[n]/Parameter[n]
добавить удалить точки объекта Map.PutObjectCoordinates/Map.GetObjectCoordinates
Открой файл Novator_2.pas - и посмотри (ну ты же 5.5 лет знакома с Delphi)
Ну вот, при содействии разработчиков Digitals, ограничение на количество точек в объекте, с которым осуществляется работа, теоретически отсутствует. Ну а практика покажет… Novator2 - 15-03-10.zip (288 KB)
Расширение функциональности Novator2, добавлено:
TNObject.Selected
TNObjects.ObjectsList
TNObjects.SelObjectsList
описание читайте в файле помощи.
Ещё один пример использования Novator2. Что такое COM технология узнать можно из интернета, на этом не останавливаемся. Скажу только одно знаете ли Вы Делфи или нет это уже не важно. По средствам интерфейсом (читай описание в Хелпе) получить доступ к данным Дигиталс возможно из любого известного Вам языка (ну если он поддерживает интерфейсы). В примере был использован VB который имеется в продуктах Office
Если Вы всё скачаете и запустите - то ничего не заработает . COM сервет (вернее всё его содержимое) нужно зарегистрировать в системе. Я знаю два варианта:
-первый (он же мною апробированный) распаковываем проек, открываем его (ну если конечно у Вас установлен Delphi 7) делаем Run - и всё ОК.
-иной (не пробовал) зарегистрировать COM сервер утилитой tregsvr.exe - запустив RegisterSer.bat (в файле прописано tregsvr.exe -t NovatorCOMforDigitals.exe). Что будет потом - самому интересно.
Вот они распределенные приложения COM сервер управляет Digitals, VBA управляет COM сервером. Писать приложения для Digitals теперь можно на любом языке с поддержкой ActiveX. Вот если бы еще встроить COM сервер в сам Digitals.
Тема похоже умерла. А жаль, есть вопросы. Хотелось бы получить подсказку. Я немного царапаю на Vb6 и посему непонимаю приведенныев инструкции примеры. В открытой карте все более менее понятно, параметры вывести там координаты объекта. Это все получается, а вот сохранить активную карту в файл с заданным именем,закрыть активную карту таких операторов ненашел. Подскажите пожалуйста