Руслан Пархуць писал(а):
Визначити новий доступний ID...
Дякую за код.
Воно то так можна, однак далі з доданим шаром працювати у скрипті - ще цікавіше
:
- позначені об'єкти карти переводяться у доданий шар функцією
@Map.Selected.ChangeLayer- функція
@Map.Layers.ObjectCount, застосована до вказаного шару повертає 0
Блін! Після @Map.Layers.ObjectCount запускаю вікно статус шарів - у шарі є об'єкти, а @Map.Layers.ObjectCount повертає НУЛЬ.
Тільки після вікна "статус шарів" @Map.Layers.ObjectCount поверне вам кількість об'єктів у шарі, а без нього - НУЛЬ.
Знаєте що мусив додати в скрипт, щоб був порядок?
Код:
;Вікно | Статус шарів
@ExecuteMenu WindowLayerStatus
;Вікно | Статус шарів
@ExecuteMenu WindowLayerStatus
І сміх, і гріх. Порядком надоїло "надягати майку через ноги".
Я не бачу інших варіантів, як тільки аби розробники таки
додали функцію оновлення списку шарів.
Коротенький скрипт, який демонструє проблему
Код:
;Створити нову карту на Normal
@FileNew Нова карта /Template=Normal.dmf
;Визначити новий доступний ID
$Lay=@Map.Layers.List
@Text.Text=$Lay
$Count=@Text.Count
$Max=@Text.Line[1]
$Max=@StringPart 1 $Max
%Cycle
$Val=@Text.Line[$Count]
$Val=@StringPart 1 $Val
@If "$Val">"$Max" Then $Max=$Val
$Count=$Count-1
@If $Count>0 Then @Goto %Cycle
$Max=$Max+1
;Додати новий шар стилю Полігон/Полілінія
$NumLay=@Map.Layers.Add $Max 1 Доданий шар
;Зібрати кілька лінійних об'єктів у шарі на замовчування
@Map.SetCollectionLayer ID0
@CollectionTemplate 5
@SelectTab 1
@Dialog.WaitBox Зберіть об'єкти в шарі "DefaultLayer" і тисніть "Прордовжити"
@Map.SelectAll
;Змінити шар зібраних об'єктів на "Доданий шар"
@Map.Selected.ChangeLayer ID$Max
;УСІ МОЖЛИВІ ОНОВЛЕННЯ ЕКРАНУ ТА ПЕРЕРАХУНОК РОЗМАХУ КАРТИ
@Window.Refresh
@Map.CalculateRange
;Визначення кількості об'єктів у доданому шарі
$CountObj=@Map.Layers.ObjectCount $NumLay
@Dialog.Message Кількість об'єктів, повернута функцією Map.Layers.ObjectCount, якогось дідька рівна $CountObj
;ВИКЛИК ВІКНА "СТАТУС ШАРІВ"
@ExecuteMenu WindowLayerStatus
;ВИЗНАЧЕННЯ КІЛЬКОСТІ ОБ'ЄКТІВ У ДОДАНОМУ ШАРІ
$CountObj=@Map.Layers.ObjectCount $NumLay
@Dialog.Message Кількість об'єктів, повернута функцією Map.Layers.ObjectCount після відображення вікна "Статус шарів" - "$CountObj"
;ЗАКРИВАННЯ ВІКНА "СТАТУС ШАРІВ"
@ExecuteMenu WindowLayerStatus
запустіть, будь-ласка, за виключеного вікна "статус шарів".