Аналитика
https://geosystema.net/forum/

Все про скрипти
https://geosystema.net/forum/viewtopic.php?f=1&t=2809
Страница 79 из 83

Автор:  matskows [ 22 июн 2021 16:32 ]
Заголовок сообщения:  Re: Все про скрипти

Як через скрипти замінити параметри?
Наприклад:
на карті є три ділянки
Кожна з них має різне значення у параметрі НД(4)
такі як 1,2,3 їх мотрібно замінити на двозначні 01,02,03

Автор:  Dmitry_Zolotar [ 22 июн 2021 16:56 ]
Заголовок сообщения:  Re: Все про скрипти

matskows писал(а):
Як через скрипти замінити параметри?
Наприклад:
на карті є три ділянки
Кожна з них має різне значення у параметрі НД(4)
такі як 1,2,3 їх мотрібно замінити на двозначні 01,02,03

$Digits=2
$AM=@ActivateMap
@if $AM=0 then @Break
$MC=@Map.Count
$I=0
%LoopObject
$I=$I+1
$ParcelNumber=@Map.Object[$I].Parameter[4]
@if $ParcelNumber= then @Goto %IgnoreObject
$ParcelNumber=000000000$ParcelNumber
$Len=@Calc length("$ParcelNumber")
$ParcelNumber=@Calc copy("$ParcelNumber",$Len-$Digits+1,$Digits)
$ParcelNumber=@DequoteText $ParcelNumber
@Map.Object[$I].Parameter[4] $ParcelNumber
@Map.RefreshObject $I
%IgnoreObject
@if $I<$MC then @Goto %LoopObject
@Window.Refresh

Автор:  aisa-soft [ 22 июн 2021 17:19 ]
Заголовок сообщения:  Re: Все про скрипти

Доброго дня!
Чи є функція, яка перевіряє наявність паролів у файлі (не відриваючи їх)?

Автор:  kochyr [ 19 авг 2021 08:38 ]
Заголовок сообщения:  Re: Все про скрипти

Допоможіть зробити скрипт щоб при виборі "так" зберігало один файл. А коли "ні" зберігало декілька, а першу карту залишало. Не можу добитися щоб при виборі "ні" відкривало вікно для збереження активної карти.

$MapCount=@MapCount
;@if $MapCount=0 @break
$Print=@Dialog.Select ЗБЕРЕГТИ ОДИН ФАЙЛ?|так|ні
@if $Print=ні then @Goto %Newcopy
@if $Print=так then @Goto %SAVE
@if $Print=0 then @break
@if $Print= then @break
%SAVE
$OriginalMap=@ActivateMap
Файл | Сохранить как...
$Zakrut=@Dialog.Select ЗАКРИТИ ФАЙЛ?|так|ні
@if $Zakrut=так then @Goto %CLOSE
@if $Zakrut=ні then @Goto %Finisf
@Goto %Finisf
%Newcopy
;$MapCount=@MapCount
@if $MapCount=0 @break
%Start
$OriginalMap=@ActivateMap
Файл | Сохранить как...
%CLOSE
@CloseMap $OriginalMap
%Finisf
@if $OriginalMap<=$MapCount @break
@Goto %Start

Автор:  voha [ 24 авг 2021 18:34 ]
Заголовок сообщения:  Re: Все про скрипти

Доброго дня.
kochyr писал(а):
Допоможіть зробити скрипт щоб при виборі "так" зберігало один файл. А коли "ні" зберігало декілька, а першу карту залишало. Не можу добитися щоб при виборі "ні" відкривало вікно для збереження активної карти.
Ваше прохання, з огляду на те, як написаний скрипт, викликає купу запитань у відповідь:
- хіба $OriginalMap може колись бути більшим за $MapCount?
Але то - байка, вам треба:
- щоб при виборі "так" зберігалася лише активна (на момент запуску скрипта) карта із запитом назви файла і закривалися без збереження змін всі інші карти?
- щоб при виборі "ні" зберігалися із запитом назви файла всі відкриті карти (в тому числі активна) і закривалися всі карти, крім активної?
Задачу, будь-ласка, конкретизуйте. Тоді скрипт раз-два складеться.

Шановні розробники!

Маю просити вас навести пояснення до застосування скриптової функції @EventPoint - "Возвращает координаты точки события в скрипте контроля".

Вкрай як треба мати номер точки/точок, координати яких були змінені, у скрипті обробки події зміни об'єкта %Events.OnChange. Не уявляю собі як це зробити.

Я собі розрізняю скрипт Digitals і сценарій контролю. Але скрипт контролю - це що? І якщо все-таки йдеться за сценарій контролю, то яким чином до нього застосувати скриптову функцію?

Моє припущення, що мовляв "@EventPoint у скрипті обробки події: повертає координати точки об'єкта, зміна координат якої викликала подію OnChange; координати точки в карті, в якій клацнули мишею для позначення об'єкта, що викликало подію OnSelect... і т.д." не правильне :wink:

Автор:  Dmitry_Zolotar [ 25 авг 2021 14:59 ]
Заголовок сообщения:  Re: Все про скрипти

Функція @EventPoint повертає координати точки на якій спрацювала одна з умов сценарію контроля.
Сценарій контролю карти може викликати скрипти, для цього в сценарій потрібно додати розділ [SCRIPT]
Приклад:

Код:
[SCRIPT]
%BeginControl:
;ця частина скрипта виконується спочатку
$Ver=@Version
@if $Ver<43851 @Goto %Exit
$Result=1
@Break
%Exit
@Dialog.Message Сценарій контроля не буде виконуватись!!! Потрібно оновити програму до версії від 21.01.2020
$Result=0
@Break

%Mess:
$EO=@EventObject
$EP=@EventPoint
@Dialog.Message $EO $EP
$Result=1
@Break

%Foo
@Dialog.InfoBox 3000 Чекаємо 3 секунди
@Break

[Touch]
L:L; Помилка примикання /SCRIPT %Mess /W


%BeginControl виконується під час старту сценарію, а %Mess виконується коли спрацьовує помилка Touch

/W в "L:L; Помилка примикання /SCRIPT %Mess /W" означає що повідомлення буде зеленого кольору
усі варіанти:
/W - попередження (зелений)
/S - помилка (червоний)
/A - автоматичне виправлення (синій)

У вкладенні файл на якому сценарій видає дві помилки

Вложения:
ControlTest.dmf [728 байт]
Скачиваний: 240

Автор:  13vp [ 31 авг 2021 17:30 ]
Заголовок сообщения:  Re: Все про скрипти

доброго дня розробники,

у новій версії перестала працювати зв'язка:

$O=@Map.SelectedObject
$img=@Map.Object[$O].Parameter[1]
$pr=rundll32.exe C:\WINDOWS\System32\shimgvw.dll,ImageView_Fullscreen
@Run $pr $img

якщо відкривання змінити на блокнот працює, з командної строки теж все працює

Автор:  Denys Sanitskyi [ 12 окт 2021 08:20 ]
Заголовок сообщения:  Re: Все про скрипти

Доброго дня! Допоможіть будь ласка автоматизувати вирішення наступної задачі. Є лінія у точках якої розміщенні точкові об'єкти та ще є не задіяні точки цієї лінії які потрібно видалити.(Додаю картинку для прикладу.)

Вложения:
2021-10-12 (2).png
2021-10-12 (2).png [ 8.85 Кб | Просмотров: 5530 ]

Автор:  Dmitry_Zolotar [ 12 окт 2021 13:51 ]
Заголовок сообщения:  Re: Все про скрипти

Код:
;номерчи айді точкового шару
$PointLayer=ID2
$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
$PC=@Map.Object[$SO].Count
$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
@Window.Refresh

Автор:  Dmitry_Zolotar [ 12 окт 2021 14:51 ]
Заголовок сообщения:  Re: Все про скрипти

Приклад

Вложения:
Комментарий к файлу: На цьому файлі скрипт працює, для Вашої карти потрібно змінити другу строку: $PointLayer=...
Nodes.dmf [1.46 Кб]
Скачиваний: 197

Автор:  voha [ 22 окт 2021 20:08 ]
Заголовок сообщения:  Re: Все про скрипти

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

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

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

Автор:  Denys Sanitskyi [ 25 окт 2021 15:15 ]
Заголовок сообщения:  Re: Все про скрипти

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

Автор:  dkorsachev [ 25 окт 2021 15:23 ]
Заголовок сообщения:  Re: Все про скрипти

Здравствуйте, подскажите пожалуйста что поменялось в программе не работает скрипт в новой версии Digitals. В старой версии 2013 года всё работает. При выборе шаблона такая вот ошибка.

Вложения:
Screenshot_2.jpg
Screenshot_2.jpg [ 14.56 Кб | Просмотров: 5344 ]

Автор:  Dmitry_Zolotar [ 26 окт 2021 16:54 ]
Заголовок сообщения:  Re: Все про скрипти

voha писал(а):
Доброго вечора.

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

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

Щось типу цього?
Код:
$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

Перевірьте, якщо працює повільно, то щось придумаємо

Автор:  Dmitry_Zolotar [ 26 окт 2021 16:57 ]
Заголовок сообщения:  Re: Все про скрипти

dkorsachev писал(а):
Здравствуйте, подскажите пожалуйста что поменялось в программе не работает скрипт в новой версии Digitals. В старой версии 2013 года всё работает. При выборе шаблона такая вот ошибка.

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

Страница 79 из 83 Часовой пояс: UTC + 2 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/