Возможно данная тема уже затрагивалась и я повторюсь, но меня интересует вопрос почему нельзя из digitals скопировать объекты в другую программу (например AutoCad) и как с этим бороться, если я не хочу каждый раз сохранять их в файл нужного формата. ![]()
Вообще это обычная практика, в принципе мало какие программы совместимы на этом уровне.
Исключение - вставка как оле-объект, и вот тут дигитал ведет себя неопределенно. В среду дигитала вставляет (Правка-Специальная вставка-Внедренный объект), а вовне не позволяет.
спасибо.
Хочу создать приложение,которое будет анализировать вложенность полигонов, исправять несоответствие границ и т.д. Для этого необходимо скопировать полигон из Digitals в создаваемое мной приложение. Реально ли это сделать? Если да,то как? Я так понял, технология OLE отпадает… ![]()
Dmitriy Fedorov
Это вполне определенное поведение. В Digitals отсутствует OLE сервер, необходимый для вставки в другие приложения объектов из нашей программы.
IvanShubin
Объекты, добавленные в любое приложение при помощи OLE-технологии, редактируются средствами создавшего его приложения. Так что от этой технологии Вам мало пользы, получить доступ к внутреннему содержимому OLE контейнера Вам не удастся.
Расскажите о вашей задаче подробнее и если мы посчитаем это целесообразным, нужный функционал будет добавлен в Digitals.
Доступ к параметрам родительского(содержащего вложенные объекты) объекта - функция PARENT [FAQ для опытных пользователей (секреты) - #10 від Sergiy_Oliynyk). Совмещение границ - Правка>Совместить с соседними
Проблема заключается в следующем. Необходимо создать индексную карту области, исходными данными являются: кварталы, представленные в виде полигонов. Для создания зон и административно-территориальных единиц я объединяю соответствующие кварталы в зоны, после соответствующие зону в административно территориальные единицы. Функция правка|объединить не всегда приводит к желаемому результату. Функция правка|совместить с соседними помогла но не очень (может не умею ей пользоваться, научите). Есть пример могу прислать куда? Причём кадастровые номера кварталов вычисляются с использованием функции PARENT, а она строгая к топологии (одна точка вне родительского полигона и родитель не определён). Как найти такие точки? ![]()
Можно найти объекты, не определяемые Digitals как вложенные для указанных полигонов. Для этого пометьте требуемые полигоны (можно сразу весь слой) и выполните команду Правка>Пометить>Внутри помеченного. Объекты для которых помеченные полигоны не являются родительскими останутся невыделенными.
Перед выполнением команды пометьте те объекты точки которых требуется переместить. Будут перемещены точки, которые находятся рядом с точками (или контурами) соседних объектов карты, так чтобы произошло совмещение этих точек (или точек с контурами). Радиус поиска соседних контуров задается в Сервис>Настройки>Точность карты на бумаге. Если в радиус поиска попадает несколько контуров, выбирается ближайший. В местах пересечения помеченных объектов с контурами соседних объектов к помеченным объектам добавляются точки (при условии, что в радиусе поиска нет точки помеченного объекта, в этом случае она совмещается с контуром).
Адрес техподдержки help@ingeo.com, высылайте пример.
Если Вы желаете программировать под Digitals, можете использовать встроенный в программу TCP/IP сервер, применяя для этого любой язык программирования и среду разработки. При помощи TCP/IP протокола можно даже управлять Digitals через локальную сеть или интернет [FAQ для опытных пользователей (секреты) - #11 від Sergiy_Oliynyk)
Или используйте готовое и очень гибкое решение для расширения возможностей программы TCPScript нашего пользователя Volod’a vinmap.net/forum/viewtop … =tcpscript
Если желаете сделать все своими силами можете посмотреть пример загрузки файлов DMF vinmap.net/samples/LoadDMF.pas
Это понятно лишь какой-то доле пользователей имевших опыт программирования. С точки зрения остальных все просто: хочу вставить из дигитала, к примеру, в word, a не получается. ![]()
Другими словами, с точки зрения технологий заложенных в дигитал поведение определенное, а с точки зрения пользователя - нет, потому как если можно внутрь, почему нельзя вовне?
Ничего, рано или поздно все будет. ![]()
Нужно просто закатать рукава и сделать работу. ![]()
А набор инструментов в принципе имеется: контроль узлов, совмещение, объединение, панель список для анализа вложения. Кое где придется и руками подредактировать.
Зато потОм! ![]()
Самое лучшее средство для тотального контроля топологии и правильности вложенности полигонов на карте - это закладка Список на правой панели Digitals.
Там видна вложенность, замкнутость/незамкнутость объектов и т.д.
Меню Вид|Контроль узлов делает примерно то же самое однако локализует ошибки уже на уровне конкретных точек и позволяет автоматически их исправить.
Закладка Список на правой панели Digitals предоставляет хороший анализ, однако построение его занимает продолжительный период времени (35 секунд, объекты имеют иерархическую структуру в 3 уровня 251 / 772 / 2591 объектов на каждом уровне). Любое изменение объекта приводит к повторному анализу. Поэтому действия - исправил – посмотрел правильно или нет – исправил – посмотрел правильно или нет ……. занимает много времени. Можно ли строить список для части карты? ![]()
Насколько мне известно, такого способа нет. Есть команда Карта-Установить рабочую зону, но она предназначена для ограничения зоны контроля узлов.
Придется просто разбить карту на несколько отдельных, а потом сливать вместе.
“Разделяй и властвуй”. ![]()