В допомогу скрипт, який циклічно добавляє 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 ![]()
И еще один запрос на улучшение функций @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 люків???
- Скопіюйте всі люки у будь-який тимчасовий полігональний шар;
- Залиште в цьому шарі, тільки, параметр номера люку;
- Перетворіть всі об’єкти цього шару в окружності (за доп. функції меню Сервіс-Перетворити-Точку в окружність…) радіусом таким щоб в них не потрапляли сусідні люки/колодязі;
- У менеджері параметрів, додайте всім колодязям параметр номера люку (якщо це ви не зробили раніше)
- Позначте всі колодязі та на вкладці Інфо натисніть кнопку Калькулятор (зелененька, праворуч вгорі);
- Виберіть “Успадковувати від зовнішніх…” та виберіть тимчасовий шар;
- Видаліть об’єкти з тимчасового шару.
Є ще один спосіб. Він більш простий, але в ньому більша, як на мене, вірогідність присвоїти дані не тому об’єкту.
- Позначте всі люки. На вкладці Інфо поставте курсор у поле зі значеннями параметра номера люку. І там же, правою кнопкою натисніть на стовпчик “N” (він знаходиться перед стовпчиками Ім’я та Значення). Виберіть “Копіювати параметр номера люків”
- Позначте всі колодязі. Зробіть те саме, але тепер виберіть “Вставити параметр номера люків”. Чим більший допуск ви виберете - тим в більшому радіусі буде вестись пошук об’єктів для вставки значення параметра але, при цьому, можуть бути знайдені “не ті” об’єкти. А чим менший допуск - тим менше вірогідність, що будуть знайдені “не ті” об’єкти але більша вірогідність, що об’єкти, взагалі, не будуть знайдені.
Спасибо большое я с первим способом розобрался!!!
Здравствуйте!! Есть DMT шаблон с автомасштабом, есть ли возможность автоматического выбора нестандартного масштаба? например 2500, 3000 ?
Шановні розробники. Хочу запитати, чи можна ще трішки вдосконалити функціонал, що-до функцій групи діалогових вікон ![]()
Функція @Dialog.Ask Text [Default=Value Size=WidthInPixels] - “Вызывает окно с полем для ввода текста и возвращает введенный пользователем текст. Ключ Default= позволяет задать начальное значение текста, а ключ Size - ширину окна в пикселах”
Так от, було би добре, якби необов’язковий параметр Size=WidthInPixels вказувати у всіх функціях - діалогових вікнах. Зокрема, стикнувся з необхідністю помістити текст (матрицю даних) у вікні @Dialog.Confirm. В діалозі - розділювач стовпчиків матриці - знак табуляції:
Подскажите пожалуйста может ли диджитал виполнить задачу:
у меня есть 300 точек мне нужно дать им номер атоматично но номер должен бить не 1,2,3,4… а В33-1, В33-2, В33-3…?
- Створіть нумерацію в якомусь параметрі (IDxxx) за допомогою Калькулятор-Последовательная нумерация.
- Створіть параметр, що вираховується з формулою “=ВЗЗ-P[IDxxx] Назва параметра”.
- Зробіть цей параметр доступний шару точок.
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Має працювати.
