диалоги для того что бы видеть что получаем, на чистой карте для параметра получаем пустое значение тогда работает @if $S= then @Map.Parameters.Add 7000513
а вот для слоя если он отсутствует получаем значение -1 слоя со всеми его описаниями и создание работать не будет так как ответ не пустой @if $L= then @Map.Parameters.Add 70005
это ошибка или это так и должно быть какой из вариантов правильный для слоя или для параметра, при его отсутствии получать млм пустое значение или хотя бы ноль, что бы при создании можна было с чем то сравнивать но никак не значения -1 слоя
@Map.Layers.FindOrCreate ID [CopyFromID] “Ищет слой с заданным ID или добавляет новый, возвращая его номер. Если задан CopyFromID, то за основу берется существующий слой.”
Наприклад: $NumShar=@Map.Layers.FindOrCreate ID6 ID11330000; Пошук шару ID6, якщо немає - створює шар ID6 на основі шару ID11330000, в змінній $NumShar - порядковий номер створеного шару @Map.Layers.Set $NumShar 6 5 Точка захоплення найблищої точки полігона; Змінює ID шару з порядковим номером $NumShar на ID6, встановлює тип шару (5-точковий об’єкт), називає шар (Точка захоплення найблищої точки полігона)
так понятно , но все таки хотелось бы что и это работало коректно @Map.Layers.Get так же как и @Map.Parameters.Get то ест если слой или параметр есть то возвращает все про него ели же нет тогда пустое значени и потом проверяй и создавай @Map.Layers.Add или редактируй @Map.Layers.Set
Может пишу не в ту тему поправьте если что @Map.Parameters.LoadFromFile Загружает список параметров карты с текстового файла (см. также @Map.Parameters.SaveToFile), а почему не написано что она также очищает список уже существующих параметров. И если есть такая функция которая добавляет параметры из файла, список порядка 30 параметров и это не единичный случай, ТО как все добавленные параметры сделать доступными определенному слою или часть параметров одному слою а часть другому @Map.Parameters.List выводит список айди и наименование слоев а @Map.Layers.SetValidParameters принимает только порядковые номера этих слоев, нигде не нашел как вывести порядковые номера вновь созданных слоев
а как же это? ;добавляем параметр ID7000580 в список доступных слою XML : Земельна ділянка
$S=@Map.Layers.GetValidParameters ID70005 @Map.Layers.SetValidParameters ID70005 $S ID7000580
в данном случае $S=@Map.Layers.GetValidParameters ID70005 как раз $S и принимает значение номера параметра а потом его вставляет @Map.Layers.SetValidParameters ID70005 $S ID7000580 @Map.Layers.SetValidParameters LayerIndex NumberList
Изменяет список доступных слою параметров, например @Map.Layers.SetValidParameters 1 3 7 11
$PresentParam=@Map.Parameters.FindByID ID7000580; Перевіряєм наявність параметра @If $PresentParam=0 then $PresentParam=@Map.Parameters.Add 7000580 5 Проба; Якщо параметра немає - створюєм, змінна $PresentParam буде мати значення номера створеного параметра
Далі дивіться Як взнати, чи доступний параметр для шару, а потім, якщо параметр не доступний: @Map.Layers.SetValidParameters ID70005 $S $PresentParam; Додаєм до списку номерів доступних для шару параметрів номер праметра
Підкажіть, будь-ласка, хто знає:
чи існує в Digitals зарезервована змінна, значення якої присвоюється у скрипті та зберігається в пам’яті на протязі однієї сесії роботи з Digitals?
Десь на форумі я таке зустрічав, але тепер не можу знайти
Вкрай треба в різних скриптах проводити аналіз: в якому “користувацькому” режимі працює Digitals.
Задум наступний:
на кнопку посаджений скрипт з автозапуском, який виводить діалог з вибором “включити користувацький режим - 1, чи включити користувацький режим - 2”
залежно від вибору, скрипт з автозапуском включає режимну кнопку-1 чи режимну кнопку-2.
Ну і тут, по-ходу питання ще одне: може якось присвоїти автозапуск скрипту з бібліотеки (файлу *.dsf) - на заміну функції %Events.OnStartup, що зараз не працює?
Есть участки с данными. Создаю каталог координат в ворде с помощью vba. Вопрос: После выброса в буфер обмена (РепортГенератор 0), данные находятся в хаотичном порядке, т.е. каждый раз в разном неотсортированном порядке (допустим уч.1 и его координаты, уч.3 и его координаты, уч.2 и его координаты). Можно ли, или как сделать чтобы репортсгенератор выбросил участки в отсортированном виде (по номеру участка)?
@Map.TempInteger та @Map.TempString
Ще можна використати виклик змінних з констант @GetConstant, якщо однієї текстової та числової змінної буде замало або необхідно використовувати ці змінні й в інших сесіях Дігіталса, але, тоді, запис змінних в константи, краще, робити не через @SetConstant (яка міняє значення константи, тільки на час роботи даної сесії Дігіталса), а вручну.
Є цикл. Кожного циклу генерується вираз-формула $A
Треба щоциклу дописувати до змінної отриманий вираз:
$s=
$s=$s$A
але вираз не додається як текст а перераховується, і виходить число.
А треба вираз.
Дякую.
@ReportsGenerator 0 - Выбрасывает данные в буфер обмена
В Excel через макросы vba обрабатываем буфер обмена (извлекаем нужные данные из определенных ячеек памяти) и строим структурированную таблицу. Чтобы посмотреть что выбрасывается в буфер обмена, достаточно пометить участки и сделать @ReportsGenerator 0. Потом на чистом листе в Экселе вставить данные (т.е. Вы увидите в каком виде Диджиталс Вам преподносит информацию. Наперед скажу что это массив данных, данные разделены через табуляцию)
То что рассчитал скрипт, изначально перед выбросом в буфер обмена, внести в какой-то дэскриптор (например CM, FL и т.д., т.е. те которые редко используются). Данные дэскриптора окажутся в буфере обмена.
Еще как вариант: записать результаты расчетов в дэскрипторы и сделать Диджиталовскими средствами отчет. Или же писать свой ДМТ-шаблон.
В общем если разработчики Диджиталса не будут против, и если это кому-то будет интересно, то в свободное время опишу как работать с буфером обмена с помощью макросов. Т.е. таким способом 98% работы делается обходя Репортс. Также в ВБА можно работать и с ХМЛ-ем.