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

Доброго вечора.

Людоньки добрі, пане Дмитре Золотар, спасайте терміново!
Як визначити в точці з координатами X Y (центр декількох, накладених одна на іншу ліній з двох точок), номер самого верхнього об’єкта (того, що має найбільший номер)?

Вже пробував NearestObject та все інше - ніяк!

Велике Вам ДЯКУЮ!!!

Здравствуйте, подскажите пожалуйста что поменялось в программе не работает скрипт в новой версии 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
Перевірьте, якщо працює повільно, то щось придумаємо

Ошибка возникает если нет указаной панели/кнопки, перепроверьте ее название.
Проверил на новой версии - работает.

Велике Вам ДЯКУЮ!!!
Дозвольте ще раз звернутись із проханням, мені потрібно щоб даний скрипт виконувався на всіх помічених лінійних об’єктах, допоможіть будь ласка із цим якщо це можливо.

;номерчи айді точкового шару $PointLayer=ID3 $BreakXYZ=-2684354.56 -2684354.56 0 $AM=@ActivateMap @if $AM=0 then @Break Відкрийте карту, помітьте об'єкт та запустіть скрипт знову $SO=@Map.SelectedObject $SC=@Map.SelCount @if $SC<1 then @Break Помічено має бути один чи більше об'єктів @Map.Selected.MarkPoints CLEAR %LoopSelected $Closed=@Map.Object[$SO].ClosedComplex @if $Closed=1 then @Goto %IgnoreSelObject $PC=@Map.Object[$SO].Count @if $PC<3 then @Goto %IgnoreSelObject $I=$PC %LoopPoint $NodeObj=@Map.Object[$SO].Node $I $PointLayer @if $NodeObj>0 then @Goto %IgnorePoint $XYZ=@Map.Object[$SO].Point[$I] $XYZ=%Library.ReplaceComma $XYZ @if $XYZ=$BreakXYZ then @Goto %IgnorePoint @Map.Object[$SO].Delete $I $I %IgnorePoint $I=$I-1 @if $I>0 then @Goto %LoopPoint @Map.RefreshObject $SO %IgnoreSelObject $SO=@Map.NextSelected $SO @if $SO<>0 then @Goto %LoopSelected @Window.Refresh

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

Ссылка на скрин TemplShow: ibb.co/0Ff19Qv
Ссылка на TempSave:

Прохання до розробників:
скриптову функцію @Map.InsertFromFile Filename “Выполняет команду “Вставка|Карта”, добавляя в карту объекты из внешнего файла” таки треба виправити так, щоб налаштування програми щодо читання Acview Shape (міняти місцями X Y) застосовувалися.
Вказане не є критичним. @Map.InsertFromFile Filename не міняє місцями X Y лише коли карта порожня і без датума.

Питання до розробників:
чи можливо реалізувати дотримання заборони оновлення карти на екрані в результаті виконання будь-яких функцій меню зі скрипта? Це покращило б роботу засобів автоматизації Digitals загалом. Я розумію, що функції меню запускаються з меню в основному “руками”, але замовляти десятки відповідних скриптових функцій, щоб позбутися оновлення карти при виконанні скриптів - якось совість не дозволяє :blush:
В кожну функцію меню, якій немає аналогу скриптової функції, хочеться додати перевірку: якщо функція запущена зі скрипта при включеній забороні оновлення - оновляти карту не треба.

Чемно дякую за постійну підтримку програми.

Тепер маю зазначити - питання термінове:
скриптова функція @Map.InsertFromFile Filename "Выполняет команду “Вставка|Карта”, ДОБАВЛЯЯ ОБЪЕКТЫ ИЗ ВНЕШНЕГО ФАЙЛА SHAPE НО НЕ МЕНЯЯ МЕСТАМИ X Y".

Є два варіанти вирішення питання:

  1. виправити скриптову функцію @Map.InsertFromFile Filename;
  2. додати скриптову функцію @Map.SwapXY - “Міняє місцями X Y”.

Інакше - треба забути про функції @FileNew Name [/Template=Templatename.dmf] і @Map.InsertFromFile Filename.

Прошу дуже, шановні розробники. Дайте, будь-ласка, відповідь.

P.S. Майка через ноги: відкрити файл Shape, позначити всі, видалити, приєднати необхідний шаблон, вставити об’єкти з того ж файла Shape.

Змінена у новій версії функція @Map.InsertFromFile під час вставки з шеп-файлу завжди міняє Х, У місцями.
Додано також функцію @Map.SwapXY, яка міняє Х, У місцями у всій карті.

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

Всім доброго дня!
Допоможіть із таким питанням як замінити знак табуляції в строці параметра виділених об’єктів на знак пробілу?

$S=@Map.Object[…].Parameter[…]
$Tab=@Calc Char(9)
$Tab=@DequoteText $Tab
$S=@Calc replace(“$S”,“$Tab”," ")
$S=@DequoteText $S
@Dialog.Message $S

[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. В частности интересует можно ли ей передать список координат и с помощью нее отстроить полигон?

Всім доброго дня!
Підкажіть будь ласка як створити автоматичний параметр до об’єктів який би відображав дату створення даного об’єкта на карті або дату внесення до нього змін.

Параметр =TimeStamp с маской dd.mm.yyyy hh:mm