Людоньки добрі, пане Дмитре Золотар, спасайте терміново!
Як визначити в точці з координатами X Y (центр декількох, накладених одна на іншу ліній з двох точок), номер самого верхнього об’єкта (того, що має найбільший номер)?
Здравствуйте, подскажите пожалуйста что поменялось в программе не работает скрипт в новой версии Digitals. В старой версии 2013 года всё работает. При выборе шаблона такая вот ошибка.
$SO=@Map.SelectedObject
$XYZ=@Map.Object[$SO].Point[1]
$MC=@Map.Count
$I=0
$Res=0
%LoopObject
$I=$I+1
$Dist=@Map.MinObjectDistance $I $XYZ
;крапка чи кома, що з них працює
@if $Dist<0,001 then $Res=$I
@if $I<$MC then @Goto %LoopObject
@if $Res=0 then @Break Не знайдено об'єктів поруч з $XYZ
@Dialog.Message $Res
Перевірьте, якщо працює повільно, то щось придумаємо
Велике Вам ДЯКУЮ!!!
Дозвольте ще раз звернутись із проханням, мені потрібно щоб даний скрипт виконувався на всіх помічених лінійних об’єктах, допоможіть будь ласка із цим якщо це можливо.
Да шаблон выгружает, но не сохраняет предыдущий. Если я выделяю несколько дилянок то при формировании следующего шаблона предыдущий не хочет сохраняться.
Ссылка на скрин TemplShow: ibb.co/0Ff19Qv
Ссылка на TempSave:
Прохання до розробників:
скриптову функцію @Map.InsertFromFile Filename “Выполняет команду “Вставка|Карта”, добавляя в карту объекты из внешнего файла” таки треба виправити так, щоб налаштування програми щодо читання Acview Shape (міняти місцями X Y) застосовувалися.
Вказане не є критичним. @Map.InsertFromFile Filename не міняє місцями X Y лише коли карта порожня і без датума.
Питання до розробників:
чи можливо реалізувати дотримання заборони оновлення карти на екрані в результаті виконання будь-яких функцій меню зі скрипта? Це покращило б роботу засобів автоматизації Digitals загалом. Я розумію, що функції меню запускаються з меню в основному “руками”, але замовляти десятки відповідних скриптових функцій, щоб позбутися оновлення карти при виконанні скриптів - якось совість не дозволяє
В кожну функцію меню, якій немає аналогу скриптової функції, хочеться додати перевірку: якщо функція запущена зі скрипта при включеній забороні оновлення - оновляти карту не треба.
Тепер маю зазначити - питання термінове:
скриптова функція @Map.InsertFromFile Filename "Выполняет команду “Вставка|Карта”, ДОБАВЛЯЯ ОБЪЕКТЫ ИЗ ВНЕШНЕГО ФАЙЛА SHAPE НО НЕ МЕНЯЯ МЕСТАМИ X Y".
Є два варіанти вирішення питання:
виправити скриптову функцію @Map.InsertFromFile Filename;
додати скриптову функцію @Map.SwapXY - “Міняє місцями X Y”.
Інакше - треба забути про функції @FileNew Name [/Template=Templatename.dmf] і @Map.InsertFromFile Filename.
Змінена у новій версії функція @Map.InsertFromFile під час вставки з шеп-файлу завжди міняє Х, У місцями.
Додано також функцію @Map.SwapXY, яка міняє Х, У місцями у всій карті.
[quote=“Dmitry_Zolotar”]
Допоможіть будь ласка із циклом до Вашої пропозиції (не виходить перейти на інший об’єкт).
$AM=@ActivateMap @if $AM=0 then @Break Відкрийте карту, помітьте об’єкт та запустіть скрипт знову
$SO=@Map.SelectedObject
$SC=@Map.SelCount @if $SC<1 then @Break Помічено має бути один чи більше об’єктів
$SO=0 @Progress.Start $SC Виконання
;@Map.Selected.MarkPoints CLEAR
;$PC=@Map.Object[$SO].Count
%LoopSelected
$SO=@Map.NextSelected $SO @If $SO=0 then @Goto %EndProc @Progress.StepBy
;$I=$PC
$SGP=@Map.Selected.GetParameter 49 @Dialog.Message $SGP @Progress.StepBy
$TB=@Calc char(9)
$SPC=@Calc char(160)
$TB=@DequoteText $TB
$SPC=@DequoteText $SPC
$SGPN=@ReplaceChar $TB$SPC$SGP
$SSP=@Map.Selected.SetParameter 49 $SGPN @Progress.StepBy
;$I=$I-1
;@Map.RefreshObject $SO
;$SO=@Map.NextSelected $SO
;$SO=$SO+1 @Goto %LoopSelected @Window.Refresh
%EndProc @Progress.Stop @Dialog.Message “Виконано!”
$CntMap=@MapCount
@if $CntMap=0 then @Break Відкрийте карту, помітьте об'єкт та запустіть скрипт знову
$SC=@Map.SelCount
@if $SC=0 then @Break Помічено має бути один чи більше об'єктів
$LstSel=@Map.Selected.List
$CntText=@Text.Text $LstSel
@Map.BeginUpdate
$TB=@Calc char(9)
$SPC=@Calc char(160)
$TB=@DequoteText $TB
$SPC=@DequoteText $SPC
$NumLin=1
@Progress.Start $SC Виконання
@While $NumLin<=$CntText %LoopSelected
@Map.DeselectAll
@Progress.StepBy
$SO=@Text.Line[$NumLin]
@Map.SelectObject $SO
$SGP=@Map.Object[$SO].Parameter[49]
$SGPN=@ReplaceChar $TB$SPC$SGP
@Map.Selected.SetParameter 49 $SGPN
$NumLin=$NumLin+1
%LoopSelected
@Progress.Stop
@Map.EndUpdate RefreshAlways
@Dialog.Message "Виконано!"Справа в тому, що команда @Map.Object[$SO].Parameter[49]=$SGPN не гарантія, що спрацює для кожного з позначених. Тому позначка з усіх позначених буде знята в результаті виконання скрипта.
Добрый день. Можете ли более подробно описать функцию @Map.AddObject. В частности интересует можно ли ей передать список координат и с помощью нее отстроить полигон?
Всім доброго дня!
Підкажіть будь ласка як створити автоматичний параметр до об’єктів який би відображав дату створення даного об’єкта на карті або дату внесення до нього змін.