Запрос на функцию

Возможность использования внутренних функций Digitals позволяет лучше автоматизировать многие типовые операции.
viewtopic.php?p=2872#2872

В настоящий момент список функций ограничен, но мы предполагаем его расширение. Если вы обнаружите, что какой либо нужной вам функции не хватает, то оставьте здесь заявку и мы постараемся оперативно ее добавить.

Постарайтесь максимально конкретно описать что именно должна делать требуемая функция, какие у нее должны быть параметры, какую именно задачу вы хотите решить и т.д.

Раздел, как ни странно, получился не слишком популярным, а ведь объявлен еще в апреле. Неужели никому не нужны никакие функции? :slight_smile:

Ок, мне нужна.

Хочется иметь крайне простую функцию: Разбить полилинию на составляющие отрезки. Вообще, я считаю, что подобная функция будет не лишней не только внутри программы, но и в меню Сервис-Преобразовать.

Согласен, что функция полезная и что ей самое место в меню Преобразовать. Добавлено.

Добавлены следующие функции:

MapCount
Возвращает количество открытых карт (окон).

Map[N].Filename
Возврашает имя файла любой открытой карты. Map[1] - первая по порядку, Map[2] - вторая, и т.д.

Map.ParentObject Number
Для объекта с указанным номером (Number) возвращает номер его “объекта-родителя” (внешнего объекта).

Нужна функция для установки “Z” параметра например:
Map.PutObjectZ, Number>Value
Number-номер объекта
Velue-значение Z.
Думал использовать функцию Map.PutObjectCoordinates, в которой менять Z, на линиях до 300 точек все нормально, однако если линия имеет 500, 1000, 4000 точек то команда не проходит:(, и второй недостаток в команде Map.GetObjectCoordinates возвращаются округленные до двух знаков координаты, если Х=ххх,269 Map.GetObjectCoordinates вернет Х=ххх,27, пытаясь поменять Z меняется и геометрия объекта что есть не хорошо!

Вторая функции “Экспорта в растр” но без окна настроек, например:
FileSaveAsTIFRGB 8,300,C:\Temp\MyRastr.tif
где:
8-8бит;
300-300 dpi:
C:\Temp\MyRastr.tif-путь и имя файла

Отвечу сам!:slight_smile:
Для изминения Z, служит функция:
“Map.Selected.ChangeHeight [Height]”, круто!!!
СПАСИБО!
Когда появилась незнаю, но всеравно спасибо!!!

Очень было бы здорово, если б вместо LayerIndex указывать ID.
LayerIndex - очень нестабильная вещь. Добавил слой в начале и все поехало :frowning:

По аналогии с другими функциями добавлена возможность указывать как номер слоя по порядку, так и его ID:
@Map.ChangeSelectedLayer 100 - ссылка по LayerIndex
@Map.ChangeSelectedLayer ID100 - ссылка по ID

Нужны:

  1. функция которая будет выдавать список слоев в которых есть объекты.
  2. функция которая будет двигать слои, на передний или на задний план.
  1. Добавлена функция Map.Layers.ObjectCount, которая возвращает список с числом строк равным количеству слоев карты. В каждой строке - число объектов в данном слое.
    Для получения числа объектов в конкретном слое можно вызвать функцию указав номер слоя, например Map.Layers.ObjectCount 5

  2. Добавлены функции Map.Selected.BringToFront и Map.Selected.SendToBack. Для пометки объектов определенного слоя можно использовать существующую функцию Map.SelectLayer.

Может лучше сделать так, чтобы в список попадали только слои в которых есть объекты? У меня больше 800 слоев, а заполненных из них 20-30 в зависимости от карты (причем они обычно всегда разные). Вам проще добавить один IF, чем мне потом просматривать 800 строк

В программе есть функции: Переключить\Следующий, Переключить\Предыдущий

Так вот УБЕДИТЕЛЬНАЯ ПРОСЬБА сделайте пожалуйста Переключить\В начало, Переключить\В конец.

Объектов в слое бывает многовато и клацать приходится несколько минут стобы дойти до края :frowning:

На днях возникла необходимость прочитать данные из таблицы, но решения так и не нашел, TCP, Exchange, SQL не имеют доступа, кроме того в SQL не всегда сохраняются данные таблиц, объект есть но пустой (в какой таблице БД они хранятся)?

  1. Можно добавить Функцию для чтения/записи данных в таблицы.
  2. В Еxchange есть параметры вынесенных подписей, хотелось бы получить к ним доступ через TCP.
    Спасибо.

Кнопки первый-последний мы добавим.
Но уже сейчас перейти в конец или начало можно нажимая кнопку и одновременно удерживая клавишу .
А еще список объектов можно вывести через Группа|Создать и Группа|Список либо вызвав Список по параметру ID объекта.

С контролом прыгает по всей карте а не по определенному слою :cry:

Большое спасибо за размещение справки по TCP!
Если есть возможность опишите команды отмеченные (“не знаю”), в ближайшее время постараюсь дописать, вижу что появляются новые команды, это радует.

Кому надо качайте.
https://vingeo.com/update/rus/TCPCommands.chm

Исправлено. Теперь с контролом перемещается на первый-последний объект текущего слоя. А если нет помеченных, то на первый-последний объект карты. Также добавлены кнопки первый-последний.

Добавлены следующие функции:

Map.GetObjectParamBuf
Map.SetObjectParamBuf

Они позволяют прочитать и записать текстовый буфер объекта в котором хранятся значения его параметров и подписей, а также содержимое таблиц.

Формат буфера для параметров и подписей:

<1>‘Номер_параметра’<3>‘Значение_параметра’<2>
Числа, взятые в угловые скобки, означают символы с соответствующими кодами. Так <1> означает символ с кодом 1, в отличии от ‘1’ - символ с кодом 49.
Все описание одного параметра заключено между символами с кодами 1 и 2.
Между символами с кодами 1 и 3 идет номер параметра в текстовом виде, далее значение параметра. Если в значении параметра встречается символ с кодом 5, то следовательно данный параметр вынесен на карту в виде подписи.
Параметры подписи, начиная от <5> и до заключающей <2>, разделяются символом <5>. Возможны следующие параметры подписи:
‘X-11.76’ Смещение подписи от центра размаха объекта по X в м
‘Y-4.59’ Смещение подписи от центра размаха объекта по Y в м
‘Z0’ Смещение подписи от центра размаха объекта по Z в м
’L’ определяет выравнивание подписи.
После L следует числовое значение. Если перевести его в Word (2 байтовый), то значение младшего байта задает выравнивание по горизонтали 0-влево, 1-середина, 2-по правому краю. Аналогично значения старшего байта по вертикали: 0-по верху, 1(256)-по центру, 2(512)-по нижнему краю.
‘O0’ Угол разворота подписи
‘S10’ Размер шрифта в пунктах на местности (не на бумаге)
‘P’ Задает криволинейную подпись (Path), которая располагается вдоль контура.

Формат буфера для таблиц:

Вначале следует заголовок таблицы, задающий число столбцов, ширину и выравнивание каждого столбца. Далее, после символа <10> следуют дополнительные параметры заголовка. Заголовок оканчивается символом <7> после которого следует текст таблицы. Содержимое ячеек таблицы отделяется символом <9> (табуляция), а содержимое строк - символом <10> (перевод строки).

Нужна функция, которая бы создавала точки в центрах полигонов (по типу той, что на панели Правка создает точки в узлах).

В идеале, эти точки должны попадать внутрь полигона-родителя, но учитывая, что полигоны бывают весьма причудливой формы, сойдёт и реализация, скажем, взятая от выноса подписей для тех же полигонов.

Заранее спасибо.

Возможность вставки центров объектов добавлена в функцию добавления узлов (в диалоге выбора после нажатия кнопки на панели Правка).

Центры добавляются только для полигонов. Думаю, что это правильно, хотя и не уверен. Считаются по формуле центроида (центра тяжести) и поэтому попадание внутрь гарантируется только для выпуклых полигонов.