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

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

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

Alpha - (не)прозорість панелі, та відповідно й кнопок на ній. 255 - непрозора панель, 0 - прозора. Спробували прибирати прозорість коли курсор в межах панелі, видно не все ще працює добре.
Margin - відступ дочірньої кнопки від краю батьківської панелі. Ctrl-Shift-C в Гуглохромі покаже картинку з співвідношенням Margin, Padding, Border.
Anchor визначає сторону прив'язки дочірнього об'єкта, коли батьківській змінює розмір. Не зрозуміло звідки в tlb-файлі воно з'явилось) розмір панелі не змінюється курсором миші.

Автор:  voha [ 13 фев 2021 14:45 ]
Заголовок сообщения:  Re: Все про скрипти

Доброго дня.
Є одне питання: як найпростіше у скрипті обробки події %Events.OnChange визначити, чи було редаговано геометрію об'єкта (переміщено окремі точки), чи було переміщено об'єкт? Це ж мабуть треба звірити вектор зміщення центру об'єкта з вектором зміщення кожної точки об'єкта?

В зв'язку з вказаним, хочу спитати розробників: чи можна окремо додати обробку події переміщення об'єкта/об'єктів EventOnMove?

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

voha писал(а):
Є одне питання: як найпростіше у скрипті обробки події %Events.OnChange визначити, чи було редаговано геометрію об'єкта (переміщено окремі точки), чи було переміщено об'єкт? Це ж мабуть треба звірити вектор зміщення центру об'єкта з вектором зміщення кожної точки об'єкта?


Доброго дня!
В будь-якому разі треба до редагування (чи до можливого редагування) записати кудись координати об'єкта, щоб потім можна звірити.

Я б це зробив через
$SO=@Map.SelectedObject
$PointList=@Map.Object[$SO].PointList
@Map.TempString $PointList

А потім при обробці події зчитав ще раз цю інформацію
$PointList2=@Map.Object[$SO].PointList

і порівняв
$PointList=@Map.TempString $PointList
@if "$PointList"<>"$PointList2" then @Break Редаговано

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

fendak писал(а):
...В будь-якому разі треба до редагування (чи до можливого редагування) записати кудись координати об'єкта, щоб потім можна звірити...
і порівняв
$PointList=@Map.TempString $PointList
@if "$PointList"<>"$PointList2" then @Break Редаговано
Чемно дякую, Миколо.
Однак записати координати треба ж у скрипті обробки події селектування об'єкта на рівні карти. Крім того, об'єкт може виявитися позначеним в результаті роботи кожного, з десятка інших скриптів. Дописувати у кожному?
Не годиться також - просто звірити списки. Порівнювати треба всі точки об'єкта: якщо знайдеться перша ж не змінена - значить тягнули окремі точки; якщо змінилися координати всіх точок - значить перетягнули об'єкт за центр.
Можна ще звірити два вектора переміщення: центра об'єкта і - будь якої зміненої точки. В такому випадку вектори переміщення ще й будувати як об'єкти прийдеться!

Поки чекатиму на відповідь розробників: чи можна окремо додати обробку події переміщення об'єкта/об'єктів EventOnMove або як у скрипті обробки події відрізнити переміщення від зміни геометрії?

Автор:  Vaho [ 18 фев 2021 08:55 ]
Заголовок сообщения:  Re: Все про скрипти

Доброго дня. Підкажіть будь-ласка. Мається змінна $N в якій записаний кадастровий номер, яким чином з неї можна витягнути останні 4 цифри (типу copy ($N,19,4)). Дякую.

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

Vaho писал(а):
Доброго дня. Підкажіть будь-ласка. Мається змінна $N в якій записаний кадастровий номер, яким чином з неї можна витягнути останні 4 цифри (типу copy ($N,19,4)). Дякую.
Код:
$PathN=@Calc Copy("$N",19,4)
$PathN=@DequoteText $PathN

Автор:  Xoxol [ 25 фев 2021 19:06 ]
Заголовок сообщения:  Re: Все про скрипти

Dmitry_Zolotar писал(а):
Без проверки количества собственников и их типа (физособа или юрособа)
Код:
$SO=@Map.SelectedObject
$Props=@Map.Object[$SO].Parameter[ID7000520]
$LastName=@XML.XPath /Proprietors/ProprietorInfo[1]/Authentication/NaturalPerson/FullName/LastName $Props
$FirstName=@XML.XPath /Proprietors/ProprietorInfo[1]/Authentication/NaturalPerson/FullName/FirstName $Props
$MiddleName=@XML.XPath /Proprietors/ProprietorInfo[1]/Authentication/NaturalPerson/FullName/MiddleName $Props
$FullName=$LastName $FirstName $MiddleName
@Dialog.Message $FullName
$ROPNM=@Map.Object[$SO].CalculateFormula ROP($FullName)
@Dialog.Message $ROPNM



Добрый вечер! Подскажите новичку, так как не знаю откуда начать. С диджиталом начал работать как неделю. Сделал схему размещения, но не знаю как в неё "втулить" этот скрипт. Делаю как кнопку, в окне мне выдает проскланённое имя фамилию, но вот как это сделать дабы оно мне в тексте это сделало? Подскажите пожалуйста!

Автор:  fendak [ 25 фев 2021 20:11 ]
Заголовок сообщения:  Re: Все про скрипти

Xoxol писал(а):
Добрый вечер! Подскажите новичку, так как не знаю откуда начать. С диджиталом начал работать как неделю. Сделал схему размещения, но не знаю как в неё "втулить" этот скрипт. Делаю как кнопку, в окне мне выдает проскланённое имя фамилию, но вот как это сделать дабы оно мне в тексте это сделало? Подскажите пожалуйста!


В шаблоні в текстовий блок вставте змінну $ROPNM, яку ви отримали скриптом.
А щоб шаблон перетворив її у значення згідно обмінника xml, використайте в тій самій кнопці такий код:

@Map.DeselectAll
@Map.SelectLayer id70005
$Papka=@ProgramFolder
@ExecuteDocumentFromFile $Papka\назва шаблону.dmt
@Map.ReplaceTableVariables

П.С.
@Map.ReplaceTableVariables - сканує текст таблиць і замінює змінні їх значеннями
Замість назва шаблону поставте свою назву шаблону (має знаходитися в папці Digitals)

Автор:  Xoxol [ 25 фев 2021 21:12 ]
Заголовок сообщения:  Re: Все про скрипти

fendak писал(а):
Xoxol писал(а):
Добрый вечер! Подскажите новичку, так как не знаю откуда начать. С диджиталом начал работать как неделю. Сделал схему размещения, но не знаю как в неё "втулить" этот скрипт. Делаю как кнопку, в окне мне выдает проскланённое имя фамилию, но вот как это сделать дабы оно мне в тексте это сделало? Подскажите пожалуйста!


В шаблоні в текстовий блок вставте змінну $ROPNM, яку ви отримали скриптом.
А щоб шаблон перетворив її у значення згідно обмінника xml, використайте в тій самій кнопці такий код:

@Map.DeselectAll
@Map.SelectLayer id70005
$Papka=@ProgramFolder
@ExecuteDocumentFromFile $Papka\назва шаблону.dmt
@Map.ReplaceTableVariables

П.С.
@Map.ReplaceTableVariables - сканує текст таблиць і замінює змінні їх значеннями
Замість назва шаблону поставте свою назву шаблону (має знаходитися в папці Digitals)


Проблема в том что после этого скрипта открывается ещё одно окно этого же шаблона и в него не вытягивает другие значения которые вытягивало до этого. А нельзя да бы при открытии шаблона сразу происходило склонение?
Простите под вечер немного натупил. Надо в первом же окне наживать кнопку.

Написал себе скрипт в эту же кнопку
$Pravo=@XML.XPath OwnershipInfo/Code
@if $Pravo=100 then $Info=власність else $Info=оренду
@Dialog.Message $Info

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

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

fendak писал(а):
Написал себе скрипт в эту же кнопку
$Pravo=@XML.XPath OwnershipInfo/Code
@if $Pravo=100 then $Info=власність else $Info=оренду
@Dialog.Message $Info

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


В скриптах Digitals трохи інша мова програмування:

@Map.SelectLayer id70005
$I=@Map.SelectedObject
$Pravo=@Map.Object[$I].Parameter[id7000512]
$Pravo=@StringPart 1 $Pravo
$Info=оренду
@if $Pravo=100 then $Info=власність
@Dialog.Message $Info

Автор:  Xoxol [ 26 фев 2021 13:25 ]
Заголовок сообщения:  Re: Все про скрипти

fendak писал(а):
fendak писал(а):
$Pravo=@Map.Object[$I].Parameter[id7000512]

А почему параметр 12? Есть расшифровка параметров? Да и функций тоже?

Автор:  Denidz [ 01 мар 2021 21:23 ]
Заголовок сообщения:  Re: Все про скрипти

Добрый день. Можно ли все-таки реализовать к скриптам комментарии, которые будут видны в панели скриптов, аналогично комментам для базовых функций. Может это будет спец коммент который начинается не с ";", а например с #. Voha уже просил, я тоже присоединяюсь к его просьбе.

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

Доброї пори доби розробникам.
Є таке прохання: подивіться, будь-ласка, на скриптову функцію @Run ExeFilename
У збиранні від 19.01.21 - працює, а вже від 19.02.21 і до тепер - не працює.

Дуже дякую, за 40 нових скриптових функцій у збиранні 01.03.21. Є що досліджувати :D , особливо цікаві @Thread ScriptCommand, @ThreadActive Handle та @WaitForThread Handle.

Залишаю актуальним:
Denidz писал(а):
Добрый день. Можно ли все-таки реализовать к скриптам комментарии, которые будут видны в панели скриптов, аналогично комментам для базовых функций. Может это будет спец коммент который начинается не с ";", а например с #. Voha уже просил, я тоже присоединяюсь к его просьбе.

Автор:  Dmitry_Zolotar [ 02 мар 2021 17:15 ]
Заголовок сообщения:  Re: Все про скрипти

voha писал(а):
Є таке прохання: подивіться, будь-ласка, на скриптову функцію @Run ExeFilename
У збиранні від 19.01.21 - працює, а вже від 19.02.21 і до тепер - не працює.

Приклад, будь ласка, що саме перестало запускатись.
Повний шлях до егзешника вказаний? Чи є додатково параметри командної строки? Чи викликається функція для файлу зареєстрованого розширення? Містить шлях/ім'я пробіли?
Наступні строки - все різні випадки
@Run C:\Program Files (x86)\Google\Chrome\Application\chrome.exe http://vinmap.net/
@Run http://vinmap.net/
@Run C:\Windows\System32\notepad.exe d:\readme.txt
@Run notepad.exe d:\readme.txt
@Run d:\readme.txt

Автор:  Dmitry_Zolotar [ 02 мар 2021 17:47 ]
Заголовок сообщения:  Re: Все про скрипти

voha писал(а):
особливо цікаві @Thread ScriptCommand, @ThreadActive Handle та @WaitForThread Handle.

Скрипт запускає обробку *.txt з папки в кількох потоках(максимальна одночасна кількість потоків визначена змінною $MaxThreadCount=5) та контролює завершення кожного. Для кожного потока викликається лише одна команда, для прикладу тут %Library.ProcessTxt $FileName

$WorkFolder=@Dialog.Ask Вкажіть папку з *.txt
@If $WorkFolder= then @Break
@Text[1].FolderList *.txt $WorkFolder
$FileCount=@Text[1].Count
$MaxThreadCount=5
@Text[2].Clear
$I=0
;
%Loop:
$ThCount=@Text[2].Count
@if $ThCount=$MaxThreadCount then @Goto %CheckThreads
$J=$ThCount
%LoopAddThread
$J=$J+1
@if $I=$FileCount then @Goto %CheckThreads
$I=$I+1
$FileName=@Text[1].Line[$I]
$Handle=@Thread %Library.ProcessTxt $Filename
@Text[2].Add $Handle
@if $J<$MaxThreadCount then @Goto %LoopAddThread
;
%CheckThreads:
$ThCount=@Text[2].Count
@If $ThCount=0 then @Goto %Finish
$J=$ThCount
%LoopThread
$Handle=@Text[2].Line[$J]
$IsActive=@ThreadActive $Handle
@if $IsActive=0 then @Text[2].Delete $J
$J=$J-1
@if $J>0 then @Goto %LoopThread
%Finish:
@if ($ThCount<>0) or ($I<$FileCount) then @Goto %Loop

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