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

В допомогу скрипт, який циклічно добавляє 0.001 до дельти координат точок, щоб підігнати площу полігона до нової площі:$N=@Map.NextSelected $A=@Map.Object[$N].Parameter[0] $B=@Dialog.Ask Новая площадь Default=$A @If $A=$B @Goto %End $Dop=0.001 %Start $Dop=$Dop+0.001 @CheckErrors 0 $S=@Map.AdjustObjectArea $N $B $Dop @CheckErrors 1 $C=@Map.Object[$N].Parameter[0] @If $C=$A @Goto %Start @Map.RefreshObject $N @Dialog.Message Для позначеного об'єкта вдалось встановити площу з $A на $B|при дельті $Dop %EndСкрипт покаже за ~30секунд, що вдалось змінити площу Вашого полігона з 0.2127 на 0.2259 при іншій дельті. В принципі, тут же й точність площі/периметра грає роль?

СПАСИБО БОЛЬШОЕ ВСЕ РОБОТАЕТ ОТЛИЧНО, СУПЕР!!!

Здравствуйте.
А можно, пожалуйста, сделать так чтобы функция @Map.MaxParameterValue искала максимальное значение заданного параметра и когда в этом параметре, только, отрицательные значения? Функция @Map.MinParameterValue работает не зависимо от того с каким знаком значения в заданном параметре, а @Map.MaxParameterValue, если нет значений больше нуля, то выдает результат 0,00 :frowning:
И еще один запрос на улучшение функций @Map.MaxParameterValue и @Map.MinParameterValue. Возможно ли “сузить” поиск этими функциями с всех объектов карты до объектов одного слоя? Например: @Map.MinParameterValue ParamIndex LayerIndex, а если параметр LayerIndex не указан, то выполнять поиск по всем объектам карты

Функции @Map.MinParameterValue и @Map.MaxParameterValue доработаны. Теперь можно задавать номер или ID слоя для поиска только в этом слое. Также исправлена ошибка с отрицательными значениями в @Map.MaxParameterValue. Обновите Ged.exe

Спасибо!

Добрый день. Нужна помощь в таком вопросе. Подскажите какой формулой можно сформировать список смежников земельного участка походий на опис меж но не такой детальный а просто с инициалами. Список должен располагаться столбиком
Например
Иванов І.І.
Петров В.М.
і тд

Допоможіть з наступним скриптом:

“Якщо на карті є угіддя 35.1, то копіюємо шар ІН4 Ділянка, вставляємо, перейменовуємо на 35.3, створюємо петлю.
Інакше просто копіюємо шар ІН4 Ділянка і перейменовуємо на 05 рілля”

Чи хоча б хтось підкажіть, якою командою скрипту можна перевірити, чи є на карті той чи інший шар.

Що-до кількості об’єктів у шарі, є “купа” варіантів: @Map.GetStatistic [LayerNumber] - Возвращает статистику карты или слоя: число объектов, число точек, суммарная площадь; @Map.FindByParameters Count|List в парі з @Map.SelCount; @Map.Layers.ObjectCount [Number] - Возвращает количество объектов в заданном слое (или во всех слоях)… Перелічених має бути достатньо.

Допоможіть будь-ласка мені потрібно скопіювати дані параметра з одного шару в інший в той же параметр: у мене є 2000 люків каналізації в даних стоїть їхній номер мені потрібно цей номер скопіювати в колодязі водопроводу (з тими само координатами) правкої замінити один шар на інший не підходить у них різна інша інформація яку не можна втратити. Чи є якийсь вихід крім переназивати кожен люк окремо, а зробити це на всі 2000 люків???

  1. Скопіюйте всі люки у будь-який тимчасовий полігональний шар;
  2. Залиште в цьому шарі, тільки, параметр номера люку;
  3. Перетворіть всі об’єкти цього шару в окружності (за доп. функції меню Сервіс-Перетворити-Точку в окружність…) радіусом таким щоб в них не потрапляли сусідні люки/колодязі;
  4. У менеджері параметрів, додайте всім колодязям параметр номера люку (якщо це ви не зробили раніше)
  5. Позначте всі колодязі та на вкладці Інфо натисніть кнопку Калькулятор (зелененька, праворуч вгорі);
  6. Виберіть “Успадковувати від зовнішніх…” та виберіть тимчасовий шар;
  7. Видаліть об’єкти з тимчасового шару.

Є ще один спосіб. Він більш простий, але в ньому більша, як на мене, вірогідність присвоїти дані не тому об’єкту.

  1. Позначте всі люки. На вкладці Інфо поставте курсор у поле зі значеннями параметра номера люку. І там же, правою кнопкою натисніть на стовпчик “N” (він знаходиться перед стовпчиками Ім’я та Значення). Виберіть “Копіювати параметр номера люків”
  2. Позначте всі колодязі. Зробіть те саме, але тепер виберіть “Вставити параметр номера люків”. Чим більший допуск ви виберете - тим в більшому радіусі буде вестись пошук об’єктів для вставки значення параметра але, при цьому, можуть бути знайдені “не ті” об’єкти. А чим менший допуск - тим менше вірогідність, що будуть знайдені “не ті” об’єкти але більша вірогідність, що об’єкти, взагалі, не будуть знайдені.

Спасибо большое я с первим способом розобрался!!!

Здравствуйте!! Есть DMT шаблон с автомасштабом, есть ли возможность автоматического выбора нестандартного масштаба? например 2500, 3000 ?

Уже есть Новые возможности программы - #167 від Bondarets_Alexander

Шановні розробники. Хочу запитати, чи можна ще трішки вдосконалити функціонал, що-до функцій групи діалогових вікон :question:

Функція @Dialog.Ask Text [Default=Value Size=WidthInPixels] - “Вызывает окно с полем для ввода текста и возвращает введенный пользователем текст. Ключ Default= позволяет задать начальное значение текста, а ключ Size - ширину окна в пикселах”
Так от, було би добре, якби необов’язковий параметр Size=WidthInPixels вказувати у всіх функціях - діалогових вікнах. Зокрема, стикнувся з необхідністю помістити текст (матрицю даних) у вікні @Dialog.Confirm. В діалозі - розділювач стовпчиків матриці - знак табуляції:

Подскажите пожалуйста может ли диджитал виполнить задачу:
у меня есть 300 точек мне нужно дать им номер атоматично но номер должен бить не 1,2,3,4… а В33-1, В33-2, В33-3…?

  1. Створіть нумерацію в якомусь параметрі (IDxxx) за допомогою Калькулятор-Последовательная нумерация.
  2. Створіть параметр, що вираховується з формулою “=ВЗЗ-P[IDxxx] Назва параметра”.
  3. Зробіть цей параметр доступний шару точок.
    Prefix.dmf (13.1 KB)

Либо используйте данный скрипт Библиотека полезных скриптов - #32 від Bondarets_Alexander

Абсолютно не писав HTML, не знайомий з моделями даних XPath, але цікавить питання, чи правильні такі тверження:

  • можна в XML загнати “впорядковану купу” інформації (наприклад з бази даних SQL) по окремим об’єктам, зв’язати об’єкти карти з елементами XML за значенням одного-єдиного параметра, написати таблицю стилів XSLT - і будем мати форматований опис кожного об’єкта у вікні контекстної підказки?
  • кнопка “Автоінфо” на панелі інструментів працює за тим-же принципом XSLT-перетворень, але без форматування, тоді такі перетворення відбуваються в коді Digitals і у “вспливаючому” вікні інформації по об’єкту не можна відобразити іншу інформацію, як тільки - значення параметрів?

Хотілося би знати відповіді, а тоді вже блище знайомитись з XSLT.

Допоміжіть написати скрипт такаго змісту:
Якщо кількість обєктів на карті з шаром 35.1 > 1, то виділений шар перейменовуємо в 35.3(прибуд.терит.) інакше в 05 (рілля)

Серед функції знайшов @Map.Layers.ObjectCount [Number], але ця функція чомусь не працює належним чином.

Написав наступним чином:
$N=@Map.SelCount
@If $N<>1 @Break Виділіть один об’єкт
$Z1=@Map.Layers.ObjectCount [89]
@if $Z1>=1 then @Map.ChangeSelectedLayer 89 else @Map.ChangeSelectedLayer 61

Можна ще б було за допомогою @Map.SelectByParameters Count|List
але як тоді довго все це прописувати - знову шукати шар. який потрібно перейменовувати і аж оді перейменовувати

Тобто: якщо в карті є хоча-б один об’єкт у шарі з порядковим номером в списку шарів 89 то, позначений об’єкт, в якому-б шарі він не був, перевести в шар з порядковим номером 89; якщо об’єктів у шарі з порядковим номером 89 немає - перевести позначений об’єкт у шар з порядковим номером 61.

Квадратні дужки в скрипті використовуються лише як ознака елемента масиву. Наприклад: @Text[N].Line[N], @Map.Object[N].Count в скрипті @Text[1].Line[5] поверне з масиву текстових блоків рядок 5 текстового блоку 1.
Одним словом: якщо для функції, у переліку функцій, перед відкриваючою квадратною дужкою стоїть пробіл - значить ці дужки означають необов’язковий параметр функції, якщо перед дужкою пробіла немає - значить в коді дужки треба лишити, і означають вони елемент масиву.$N=@Map.SelCount @If $N<>1 @Break Виділіть один об'єкт $Z1=@Map.Layers.ObjectCount 89 @if $Z1>=1 then @Map.ChangeSelectedLayer 89 else @Map.ChangeSelectedLayer 61Має працювати.