Все про скрипти

25.03.19 Додана скриптова функція @Map.ParentRaster Number [ParentLayer] “Повертає номер батьківського об’єкта растрового зображення у шарі ParentLayer, що містить в собі об’єкт з номером Number”

Доброго дня шановним Розробникам.

Є у мене такі питання:

  1. В якому стані знаходяться об’єкти карти, отримані шляхом застосування до збірного лінійного об’єкта команди [ Операції з об’єктами.Розділити ]?
    Для кожного фрагмента після розділення такого об’єкта, функція @Map.ParentObject Number [ParentLayer] не дозволяє виконати аналіз вкладеності, оскільки повертає 0 при наявності батьківського полігона в шарі ParentLayer.
    Функція @Map.CalculateRange “Расчитывает новый размах карты и объектов после редактирования” ймовірно і не має розраховувати заново вкладеність об’єктів, але ж spbSplit - повинна, і лише для фрагментів розділеного.
    Наразі приходиться вирізати і вставити один зі створених об’єктів, тоді все “гуд” - батьківський для кожного зі створених визначається:@Map.Object[$Obj].Select ;[ Операції з об'єктами.Розділити ] @ExecuteMenu spbSplit $CountObjAfterSplit=@Map.Count @Map.SelectObject $Obj @Map.Selected.Cut @Map.Paste $Obj=@Map.SelectedObject $ParentObjLisn=@Map.ParentObject $Obj ID81261000Чи на часі - виправити роботу функції spbSplit :question:

  2. Хочу ще раз попросити: скриптова функція @Map.Undo.Undo оновлює карту на екрані та відновлює її оновлення, хоч попередньо в скрипті оновлення карти заборонене командою @Map.BeginUpdate.

Наперед дякую за підтримку.

Доброго дня розробникам.

Є не критичні зауваження щодо скриптової функції @Map.PerpendicularToNearestLine FromPoint ToObj SegmObjLayer [Reverse], в якій “…Reverse - якщо вказано, змінює напрямок створеного об’єкта”:

  1. насправді, якщо Reverse не вказано, застосування функції спричинює помилку виконання “Could not convert variant of type (Null) into type (OleStr)”, значить Reverse - обов’язковий параметр;

  2. функція завжди повертає 1 (мабуть ознака того, що об’єкт з номером $CreatedObj=@Map.Count створено), однак краще - номер створеного об’єкта.

Приклад застосування функції Построение перпендикуляров от точечных объектов до ближайшего сегмента полилинии (якщо прибрати Reverse матимемо помилку виконання).

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

Скрипт создает карту $WorkFolder\AllParcels.dmf, в который загружает все xml-файлы из папки $WorkFolder и вложенных. Папка $WorkFolder запрашивается в диалоге. Карта $WorkFolder\AllParcels.dmf автоматически не сохраняется.

$WorkFolder=@Dialog.SelectFolder Оберіть папку з xml-файлами $FE=@FolderExists $WorkFolder @if $FE=0 then @Break Не знайдено шлях $WorkFolder @Text[1].FolderListTree *.xml $WorkFolder $PP=@ProgramPath $FC=@Text[1].Count @if $FC<1 then @Break Не знайдено xml-файли у $WorkFolder $I=0 @FileNew $WorkFolder\AllParcels.dmf /Template=XMLNormal.dmf $AM=@ActivateMap @Progress.Start $FC Обробка файлів %LoopFile $I=$I+1 @Progress.StepBy 1 $Canceled=@Progress.Canceled @if $Canceled=1 then @Goto %Exit $FN=@Text[1].Line[$I] @Map.InsertFromFile $FN @if $I<$FC then @Goto %LoopFile %Exit @Progress.Stop @Map.SelectAll @Map.FrameSelected @Window.ShowSelected

подскажите ка мне как можно оттакое http://prntscr.com/ndzum1"чудо" удалить? Ньюанс - База Данных на всю область. :exclamation:

Если идёт речь о координате то Вам нужно выделить участок в котором нужно удалить точку, навестись на точку и нажать “r”

Подскажите каким образом пронумеровать 100 участков последовательно, как то не получается как показано на видео в ютубе. возможно я не так делаю. в каком я должен слое нумеровать чтоби получилось?

я поняв як нумеровати але підскажіть яким чином зробити щоб нумерація з’явилсь на малюнку

Доброго дня.

Є у мене питання до розробників щодо автоматизації виконання функцій головного меню програми Digitals скриптовою мовою.

Вступ:
Запустивши скрипт з кнопки панелі інструментів користувача можна виконати послідовність як скриптових функцій, так і функцій, які виконуються з меню програми. Скриптова функція @Map.BeginUpdate застосовується для заборони оновлення карти на екрані на час виконання послідовності функцій, а скриптова функція @Map.EndUpdate [RefreshAlways] відновлює оновлення.

Суть проблеми:
На сьогодні заборона оновлення карти на екрані для майже усіх скриптових функцій працює коректно, але для функцій меню - ні. Воно й зрозуміло, бо то є ФУНКЦІЇ МЕНЮ, призначені для запуску вручну.

Саме питання:
Функцій меню програми досить багато, для багатьох з них немає аналогічної скриптової функції, яка би працювала без оновлення карти на екрані. Замовляти відповідні скриптові функції :question:

Якщо так, тоді вже треба додати скриптові функції:

  • Map.Selected.PolylineToLines “Розбиває полілінії позначених об’єктів на окремі лінійні об’єкти по точкам (те ж саме виконує функція з меню Сервіс > Перетворити > Розбити на лінії)”;
  • Map.CheckDuplicates [/HIDE] “Позначає всі об’єкти з меншими номерами серед декількох однакових за геометрією (те ж саме виконує функція з меню Карта > Перевірка > Однакові). Наявність ключа HIDE вказує на необхідність не відображати повідомлення про кількість позначених об’єктів”;
  • Map.CompareObjects "Позначає всі об’єкти, геометрія яких відсутня в іншій, відкритій поруч карті (те ж саме виконує функція з меню Карта > Порівняти > Об’єкти).

Демонстрація проблеми на відео

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

Доброго дня.

Все в мене не доходили руки вияснити питання: чому файл ініціалізації програми Digitals (Ged.ini) “забивається” текстом скриптів обробки подій рівня карти або шарів, і час від часу його треба чистити. Інакше, кількість рядків у ньому стає десятки тисяч. Тепер знайшов залежність.

Якщо: 1) відкрити менеджер шарів; 2) поставити курсор у списку шарів на шар, в якому записаний скрипт обробки події; 3) закрити менеджер шарів будь-яким способом - текст скриптів обробки подій записується (дописується) до значення ключа Text секції [FormLayers.cbxFormat] файла Ged.ini :open_mouth:

Таким чином: кожного разу, як Ви активували шар зі скриптами обробки подій і закрили менеджер шарів, файл Ged.ini доповнюється текстом скриптів.

Виправили, спробуйте в новій версії

Дуже дякую за оперативну підтримку.

в Скрипте обработки событий нужно задать диапазон масштаба для срабатывания/отключения работы скрипта.

%Events.OnPaint
@Beep
Вид | Обновить

типо срабатывание с диапазоне масштаба карты 1:100-1:5000 и 1:5000-1:350000

Доброго дня Розробникам.

Я щодо “Отладчик скриптов с пошаговьім вьіполнением (Сервис|Настройки|Главная|Константьі ScriptDebugger=1)” для налагодження роботи скриптів маю деякі прохання.

  1. Практично нереально покроково виконати скрипт, в якому є цикли (а є вони майже у всіх скриптах з сотнями ітерацій). Адже без можливості вставити/зняти точку зупинки виконання, приходиться проходити покроково всі ітерації циклу. Якби реалізувати вставку/видалення точки зупинки виконання (як для прикладу у VBA - лівим кліком зліва від рядка скрипта) або кнопкою “пауза” в активний рядок компонента “Script”, можна було б по-за тілом циклу пройти покроково, а цикл - першу ітерацію покроково, решту ітерацій - до точки зупинки, вже за межами циклу.

  2. Автоматичне прокручування тексту скрипта відбувається при покроковому виконанні за досягнення курсором (на поточному рядку) нижньої границі компонента “Script” таким чином, щоб курсор опинився посередині висоти компонента. Це добре, оскільки видно найближчі кроки, які були виконані й ті, що будуть виконані. Однак чи не краще, щоб автоматичне прокручування відбувалось з кожним кроком виконання а курсор, “добравшись” у покроковому виконанні до середини висоти компонента, залишався посередині. Тобто: кожний крок виконання автоматично прокручує текст скрипта для забезпечення видимості в компоненті “Script” найближчих виконаних і тих, що будуть виконані, команд скрипта.

  3. З часом, мабуть треба буде дати можливість редагувати текст скрипта при налагодженні. Але це далі - потім.

Що означає буква “(с)” в скриптах?
З якою метою в кінці назви скрипту додається b[/b].tlc?
Чи грає це якусь роль для скрипту, чи це просто копірайт?

У назві файла панелі інструментів (с) означає, що панель інструментів компільована під ключ захисту прграми Digitls.

Добрий вечір, розробники Digitals.
Де можна почитати про новий відладчик подій, який включається в константах ScriptDebugger=0 ?

І ще в одного з користувачів при роботі скриптів вискакує постійно якась форма типу цієї (див зображення). Що це таке? Як це забрати. Версія програми при цьому від 14.06 ще.

Тут читати нема чого. В константах ставим ScriptDebugger=1, перезапускаєм Digitals, запускаємо скрипт і на першій же команді скрипта отримуємо

  • вікно для налагодження роботи скрипта. У вікні є кнопочка для покрокового виконання. В нижній частині вікна список змінних та їхніх значень. Тестуйте будь-ласка і давайте пропозиції.