Аналитика

Цифровая фотограмметрия, картография и землеустройство
Текущее время: 28 мар 2024 21:21

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ Сообщений: 1235 ]  На страницу Пред.  1 ... 68, 69, 70, 71, 72, 73, 74 ... 83  След.
Автор Сообщение
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 26 мар 2020 20:12 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
Завдяки постійній підтримці та вдосконаленню функціональних можливостей програми, за що - велике дякую розробникам, з'являються нові та модифікуються розроблені раніше скриптові функції.

Так, за період з 05.02 по 26.03 розроблені:
@EventPoint - повертає координати точки події у скрипті контролю (ймовірно - у скрипті обробки події: координати точки об'єкта, зміна координат якої викликала подію OnChange; координати точки в карті, в якій клацнули мишею для позначення об'єкта, що викликало подію OnSelect... і т.д);
@Map.CheckSharedBorder ObjIndex1 ObjIndex2 LayerID1 LayerID2 ... - перевіряє спільну границю двох полігонів на співпадання з границями об'єктів інших шарів (повертає 1 - якщо хоча б один лінійний фрагмент спільної границі двох полігонів лежить на границі хоча б одного об'єкта у шарі LayerID1 LayerID2 ... або 0 - якщо такого фрагмента немає?) тут я нюхом чую, що ця функція одна - робить ту ж роботу, що й увесь мій, до жалю складний, функціональний скрипт;
@Map.Layers.RemoveCyrillic - видаляє кириличні символи із назв шарів;
@Map.Object[N].GoogleBLCode - повертає широту/довготу об'єкта у форматі Google Maps (координати в псевдо-Меркатора центра чи центроїда?);
@Map.Object[N].IndexOfPoint - (повертає індекс - "номер" точки об'єкта N, яка ...?);
@Map.Object[N].PointList Mask [Datum] - повертає форматований список координат об'єкта (Mask - було би добре мати приклад маски форматування списку, і ще - чи список можна/варто присвоїти в @Text.Text?);
@Map.Parameters.RemoveCyrillic - видаляє кириличні символи із назв параметрів;
@PrintSettings DuplexON AutoOrientON BufferON - повертає/встановлює налаштування друку 0/1/*;
@Map.Object[N].Path X Y / Distance (build 43902) - повертає довжину шляху вздовж границі об'єкта від першої точки до точки X Y, або координати точки X Y від довжини шляху;

модифіковані:
@Map.NearestObject Range IgnoreObj X Y Z [LayerID1 LayerID2 ...] (build 43916) - повертає номер найближчого до точки X Y Z об'єкта в межах відстані Range (Range=0 - на будь-якій відстані). Об'єкт з номером IgnoreObj не шукається, а при наявності числового значення ID шару/шарів LayerID1 LayerID2 ... пошук найближчого виконується лише серед об'єктів у вказаних шарах;
@Map.MinObjectDistance Object1 Object2 or Object1 X Y [Z] (build 43916) - повертає мінімальну 2D відстань між об'єктами Object1 та Object2, або відстань від точки X Y [Z] до об'єкта Object1;
@Map.ParameterValuesList ParamIndex [LayerIndex] [Filter] - повертає список значень параметра ParamIndex всіх об'єктів, яким він доступний, або лише об'єктів у шарі LayerIndex (Filter - ймовірно обмежує множину об'єктів, значення параметра ParamIndex яких будуть у списку?)

Питання по функціях виділені курсивом. Я от що подумав: ці функції замовляють користувачі, які мають необхідність автоматизувати рутинні операції або вирішувати задачі ГІС аналізу а отримавши бажане - користуються собі "мовчки". Як би так самоорганізуватись, щоб: додали розробники функцію - а замовник тут-таки виклав особливості роботи з функцією.

Краще грає в шахи той, хто знає як ходять фігури :wink:


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 27 мар 2020 10:08 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
Доброго дня.

Маю чергове прохання до розробників щодо роботи скриптової функції @Map.PerpendicularToNearestLine FromPoint ToObj SegmObjLayer [Reverse].
Bondarets Alexander писал(а):
Построение перпендикуляров от точечных объектов до ближайшего сегмента полилинии

Скрипт использует новую функцию

@Map.PerpendicularToNearestLine FromPoint ToObj PerpendicularLayer [Reverse]

которая строит перпендикуляр из точки FromPoint (X Y Z) до ближайшего сегмента полилинии ToObj.

Насправді трохи не так: "Создает объект из 2х точек. Первая точка FromPoint, вторая точка лежит на ближайшем сегменте объекта ToObj"
Вложение:
PerpendicularToNearestLine.bmp
PerpendicularToNearestLine.bmp [ 144.54 Кб | Просмотров: 7113 ]

Чи можна поправити функцію, щоб будувались дійсно тільки перпендикуляри, а результат функції був 1 - якщо перпендикуляр був побудований і 0 - якщо такий побудувати не вдалося?

І ще. Стосовно аргумента [Reverse]

В скриптовій функції @Map.NearestObject Range IgnoreObj X Y Z [LayerID1 LayerID2 ...] аргументи LayerID1 LayerID2 ... - ID шарів, об'єкти в яких шукаються. Однак правильний результат функція повертає лише якщо вказано виключно числові значення (наприклад: "35", а не "ID35").
Та ж сама @Map.PerpendicularToNearestLine FromPoint ToObj PerpendicularLayer [Reverse]: якщо має аргумент PerpendicularLayer рівним 35, сприймає його як порядковий номер шару в менеджері шарів, якщо ID35 - як ID шару. @Map.NearestObject мала би сприймати ID шару так, як і решта функцій.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 29 мар 2020 23:22 
Эксперт
Эксперт

Зарегистрирован:
30 июн 2017 20:52
Сообщения: 63
Откуда: Херсон
Підкажіть як змінити текст за допомогою скрипта. Наприклад на карті є окремий обєкт "текст" я його виділяю, а далі якою фунцією скористатися щоб підставити необхідне мені значення? і ще підкажіть функцію яка виконує команду "перемещение с разворотом". Дякую!


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 30 мар 2020 00:02 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
VictorR писал(а):
Підкажіть як змінити текст за допомогою скрипта. Наприклад на карті є окремий обєкт "текст" я його виділяю, а далі якою фунцією скористатися щоб підставити необхідне мені значення?
@ExecuteMenu EditObject (те ж, що і меню Правка | Властивості об'єкта...). Об'єкт зі стилем "Таблиця" повинен бути позначеним. Значить так - фрагмент коду:
Код:
;Вставити текстовий блок, де ID110 - шар зі стилем "Таблиця"
$TableObj=@Map.NewObject ID110
;Розміщення блока тексту в точці $P
@Map.Object[$TableObj].Point[1] $P
;Присвоєння тексту $Text
@Map.Object[$TableObj].TableText $Text
;Промальовування на екрані
@Map.RefreshObject $TableObj
;Отримання властивостей текстового блоку, редагування тексту і т.д.
@ExecuteMenu EditObject
VictorR писал(а):
і ще підкажіть функцію яка виконує команду "перемещение с разворотом"
Якщо на форумі: Сдвиг с разворотом, тоді @ExecuteMenu spbMove (те ж, що й кнопка [ Режим конструювання.Переміщення ]), або
@Map.Object[N].MoveTo X Y [Z] - переміщення об'єкта в точку X Y [z];
@ExecuteMenu ToolsRotate (те ж, що й меню Сервіс | Розворот...).


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 30 мар 2020 18:57 
Эксперт
Эксперт

Зарегистрирован:
30 июн 2017 20:52
Сообщения: 63
Откуда: Херсон
voha Дякую за підказки! трохи розібрався.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 04 апр 2020 20:49 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
Доброї пори доби.

Маю таке питання: як можна "назавжди" в карті ідентифікувати окремі точки об'єктів? Наприклад - точки, які були вставлені в результаті суміщення з сусідніми.

Чи можна для цього використати статус точки?
Dmitry_Zolotar писал(а):
Первое значение - статус точки, битовая маска, содержащая информацию о маркированности, видимости точек и некоторая другая информация.
Є сумніви, адже маркування точки встановлює маску 64, є ще маска 8... Чи можна встановити окремим точкам, наприклад - маску "1", і вона не буде змінюватись автоматом... і буде записана в карті... і можна будь-коли "виловити" точки з цією маскою?

P.S. Дослідним шляхом встановив: призначення своєї маски (наприклад "1") окремим точкам об'єкта, дозволяє ідентифікувати (відрізнити) ці точки від інших в подальшій роботі з об'єктом. Маркування, або інші операції, які викликають системну зміну їхніх масок, лише додають присвоєну скриптом маску до системної маски. Отже: в будь-якому випадку можна отримати встановлену скриптом маску точки, помноживши на 8 залишок від ділення маски на 8 :D

Дякую за увагу.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 08 апр 2020 13:29 
Гуру
Гуру

Зарегистрирован:
05 апр 2012 10:20
Сообщения: 797
Откуда: Львівська область
Провів інвентаризацію скриптових функцій. За майже 4 роки в програму додали майже 80 новий функцій:
Обробка подій
%Events.OnPaint - скролінг (прокрутка мишкою) карти
%Events.OnCollectionLayerChange - зміна шару для збору
@EventObjectsList - повертає список номерів об'єктів для останньої події

Управління скриптом
@Dialog.Error Text - Виводить вікно з важливим текстовим повідомленням (з червоним хрестиком і відповідним звуком)
@Dialog.Warning Text - те саме, що в попередньому пункті
@Beep - подає звуковий сигнал
@ExecuteDocumentFromFile DMTTemplateName - формує звіт по DMT-шаблоні з можливістю викликати шаблон, який знаходиться за межами самої програми. DMTTemplateName - повний шлях до розміщення шаблону
@IterateSelectedObjects Scriptname - повторює скрипт для кожного виділеного об'єкта карти, передаючи його номер, як параметр

Карта
@InsertFragment DestinationFilename - вставляє фрагмент карти, видобутий по id (Карта - Порівняти) в карту-приємника (Destination)
@Map.DeleteThematicLayers - видаляє тематичний вигляд
@Map.RemovePasswords PW1|PW2|... - видаляє задані паролі з карти
@Map.Scale NewScale [0/1 0/1] - змінює машстаб карти (необов'язкові параметри включають масштабування УЗ і підписів)
@Map.SetAOI - встановлює робочу зону карти за виділеними об'єктами
@SourceMap - повертає номер поточної карти для Сервіс/Документи

Система координат
@DatumList - повертає список назв датумів із файлу Datums.ini

Управл. об'єктами карти
@Map.CollectedObject - повертає номер поточного об'єкта, який збирається
@Map.DeleteObject Number - видаляє вказаний об'єкт
@Map.Object[N].GetMinMax - повертає розмах об'єкта у вигляді "MinX MinY MinZ MaxX MaxY MaxZ"
@Map.Object[N].OverlayList [Layer] - повертає список усіх об'єктів, які спавпадають із вказаним (або тільки в конкретному шарі)
@Map.RenumberIDs [LastUsedID] - переприсвоює id об'єктам, починаючи з LastUsedID

Геометрія об'єктів
@Map.DeleteOverlays - видалає точки, що співпадають в об'єктах інших шарів
@Map.GeneralizeObject ObjectIndex [Accuracymm] - виконує генералізацію (видалення точок на рівних лініях) об'єкта з точністю Accuracymm
@Map.IntersectionWithLayer ObjectIndex LayerIndex - створює об'єкт-пересічення з об'єктами заданого шару
@Map.Object[N].Center - повертає координати центру об'єкта
@Map.Object[N].Centroid - повертає координати центроїда об'єкта
@Map.Object[N].ClosedComplex - повертає 1 - якщо об'єкт N складний полігон і 0 - якщо не складний полігон
@Map.Object[N].GoogleBLCode - повертає довготу/широту об'єкта у форматі Google Maps
@Map.Object[N].Path X Y / Distance - повертає довжину шляху вздовж об'єкта до точки ХУ, або точку ХУ по довжині шляху
@Map.Object[N].PointList Mask [Datum] - повертає форматований список координат об'єкта
@Map.Selected.ToStrip Width [0/1 - buffer] - перетворює виділені об'єкти в смуги заданої ширини (чи буферну зону - дод. параметр 1)
@Map.Selected.Rotate Angle - розвертає виділені об'єкти на вказаний кут
@Map.SplitMultiPolygon N - розбиває складний полігон на окремі

Групування об'єктів
@Map.GroupList - повретає список усіх груп карти
@ShowGroup GroupName - виводить вікно із списком усіх об'єктів групи

Пікети
@Map.InsertPointsToSelectedPolygons Layer HorizStep VertStep Chess RotationAngle HorizShift VertShift - додає точки у виділені полігони
@Map.Object[N].Node PointNumber [Layer] - повертає номер пікета, який співпадає з точкою об'єкта

Шари
@Map.ExcludePolygonLayers ID1 ID2 ... - виключає вказані шари із створення полігонів

Параметри
@Map.CompareParameters Index1 Index2 ... - порівнює значення параметрів об'єктів, повертаючи 1, якщо усі вони співпадають
@Map.DBFNamesFromID - додає до назви параметрів /DBF:НазваПоля на базі їх ID
@Map.Parameters.Name Number - повертає назву параметра
@Map.Parameters.RemoveCyrillic - видаляє символи кирилицею із назви параметра
@Map.ReplaceParameterValues ParamIndex TextFile - замінює по текстовому файлу в певному параметрі значення лівої колонки на значення правої колонки (в текстовому файлі колонки мають розділятися знаком табуляції)

Підписи
@Map.CaptionToContour ObjectIndex CaptionIndex - садить підписи на контур об'єкта (наприклад, горизонталі)
@Map.CreateBuildingCaptions PCap PLink LLink - створює підписи номерів будинків

Умовні знаки
@Map.LayerSymbolFromZoom LayerIndex Zoom1:SymIndex1 Zoom2:SymIndex2 ... - змінює умовний знак шару залежно від масштабу на екрані
@Map.Symbols.Rescale Coefficient - змінює розмір усіх умовних знаків (множиться на Coefficient)
@Map.SymbolsToObjects - перетворює символізовані полілінії у звичайні

Растри
@AutoPyramid 0/1 - Включає/відключає запит на побудову пірамід в растрах
@GetImageDatum RasterFileName - повертає поточний датум орієнтованого растру
@GetImageBitsPerPixel RasterFileName - повертає розмір пікселя растру (на землі, в метрах)
@GetImageGSD RasterFileName - повертає розмір пікселя растру (на землі, в метрах)
@Map.GetPixel X Y Z [Channel] - повертає значення RGB пікселя у вказаних координатах для відкритого растру
@Map.ParentRaster Number [ParentLayer] - повертає номер растрового зображення, всередині якого знаходиться об'єкт
@Map.SaveSelectedImageGrounds - зберігає внутрішню рамку растру в список його опорних точок
@SetDefaultImageDatum DatumName - присвоює датум за замовчуванням для растрових зображень без датуму
@SetImageDatum DatumName FileName - присвоює зорієнтованому растру його поточний датум

Файли та папки
@Map.FragmentFilename - повертає повну назву файлу карти з суфіксом поточної дати і часу
@Map.MainFilename - повертає повну назву карти без суфіксу, відокремленого символом _
@ChangeDASRasterName Suffix Filename - Змінює назву файлу вигляду *-N.tif на *-F.tif/*-B.tif/etc

3d та ЦМР
@Map.CalculateZ X Y [ParamIndex] - повертає інтерпольовану висоту чи значення заданого параметра в точці Х У
@Map.AutomaticBreaklines [LayerIndex] - будує структурні (характерні) лінії по горизонталях
@Map.FilterSpotheights LayerIndex MinHeightInterval [ShowInfo] - видаляє сусідні пікети з різницею по Z менше ніж MinHeightInterval
@Map.SlopeDirection X Y - визначає напрямок насхилу в будь-якій точці карти

Робота з текстом
@Assign - присвоює змінній значення текстового рядка без спроби вирахувати вирази
@Map.CreateExplication - створює експлікацію угідь
@Map.PrepareForestTable ObjNumber - готує текст таблиці промірів лісного виділу
@Map.ReplaceTableVariables - сканує текст таблиць і замінює змінні їх значеннями
@Random [Range] - повертає випадкове число від 0 до Range. Якщо Range не задано - то випадково повертає 0 або 1
@Text[N].KeyValue FindStr - читає значення за ключом такого вигляду: ключ<tab>значення
@ToDate DateString - повертає числове значення дати по її символьному увленні, або поточну дату

Управління самою програмою
@Halt - примусово завершує роботу програми
@Hardlock - повертає номер ключа ліцензії програми
@MainWindowPos [Left Top Width Height] - читає та змінює розмір і положення головного вікна Digitals
@MenuChecked MenuItemName - повертає стан пунтку меню (1 - виділений, 2 - ні)
@MenuState InternalName - повертає 1, якщо меню виділене або кнопка натиснута за внутрішньою назвою пункту
@PrintSettings DuplexON AutoOrientON BufferON - повертає/встановлює налаштування друку
@Window.GotoXYZ X Y [Z] - встановлює курсор (марку) у позицію XYZ

Вихід за межі програми
@DayOfWeek - повертає поточний номер дня тижня, починаючи від неділі
@HTTP.Get URL - викликає URLадресу і виводить текстовий результат сторінки
@Map.GetYandexMapInfo X Y [Lang] - завантажує найближчу адресу з Yandex maps
@Map.Selected.GoogleElevation GoogleAPIKey - дістає висоти виділених об'єктів зі сервісу Google Elevation
@SendDebugReport - відправляє розробникам звіт виправлення і пов'язані з ним файли

Але є ще кілька функцій, які не мають опису і значення яких мені не зрозуміле:
@Map.AdjustCaptions - ніби впорядкування підписів, але з яким принципом?
@Map.FromPLG - ?
@Map.Lock - закриває вміст карти? За яким приципом? Візуально нічого не знаходжу в результаті.
@Map.Object[N].Filter [MinDistance] - ніби фільтрує об'єкти, але за яким принципом?

Є функція @Map.SlopeDirection X Y - визначає напрямок насхилу в будь-якій точці карти. Не можу зрозуміти, що це за напрямок? У якій системі координат? Це ніби й не вертикальний кут і не напрямок від азимуту. Що за цифру повертає дана функція?

При запуску функції @Map.CreateExplication видає помилку: CounsilExplCols.txt - не знайдено. Де взяти цей файл?

і ще не зрозуміла роль одної старої функції:
@Map.MovePoints
про неї уже запитували, але відповіді так і не було.

_________________
додатково про скрипти Digitals на www.digitals.at.ua


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 08 апр 2020 14:29 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
@Map.SlopeDirection X Y - повертає дирекційний кут напрямку максимального ухилу місцевості (максимального кута нахилу) у точці X Y. Результат - кут у вигляді десяткового числа. З такого кута я визначав експозицію схилу;
@Map.MovePoints - переміщує передостанній позначений точковий об'єкт на останній позначений точковий об'єкт;
@Map.AdjustCaptions - зміщує підписи в карті таким чином, щоб уникнути накладання рамки підпису (ballon) на границю будь-якого об'єкта карти (вказане накладання існує, якщо границя об'єкта перетинає рамку підпису у двох точках - відтинає від рамки частину її площини). Таким чином, не зміщуються підписи, рамки яких накладаються одна на іншу, містять кінцеву точку лінійного об'єкта або точковий об'єкт.

Крім того:
@Map.Object[N].IndexOfPoint X Y - шукає точку об'єкта N, яка має координати X Y (повертає номер точки або 0 - якщо такої не знайдено). Координата Z ігнорується, навіть якщо така вказана.

Лишаються:
@Map.FromPLG - ?
@Map.Lock - закриває вміст карти? За яким приципом? Візуально нічого не знаходжу в результаті.
@Map.Object[N].Filter [MinDistance] - ніби фільтрує об'єкти, але за яким принципом?
При запуску функції @Map.CreateExplication видає помилку: CounsilExplCols.txt - не знайдено. Де взяти цей файл?


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 09 апр 2020 10:33 
Эксперт
Эксперт

Зарегистрирован:
30 июн 2017 20:52
Сообщения: 63
Откуда: Херсон
fendak,voha Дякую, дуже корисна інформація! Побажання до розробників: було б не погано створити окремий текстовий довідник, з усіма функціями, їх описом та можливістью пошуку функії за описовим запитом.

Нагадайте будь ласка функцію яка присвоює виконання скрипту окремій клавіші на клавіатурі


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 09 апр 2020 11:42 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
VictorR писал(а):
...створити окремий текстовий довідник, з усіма функціями, їх описом та можливістью пошуку функії за описовим запитом...
Думаю це - справа самих користувачів, і робити це варто на аркуші MS Excel - і пошук є, і додавати функції легко. Скоро викладу такий файлик, станом на таке-то число.
VictorR писал(а):
Нагадайте будь ласка функцію яка присвоює виконання скрипту окремій клавіші на клавіатурі
Призначити гарячу клавішу інструментальному скрипту.

Відтепер (з 9 квітня 2020 р., 8:33:28 - build 43930) інструментальний скрипт, в якому є дублі міток, не запускається (і це - добре). Функціональний скрипт, що містить дублі міток, будучи викликаний з інструментального скрипта, дає помилку виконання Duplicate label з посиланням на викликаючий скрипт (і це - правильно, необхідно виправити помилку логіки скриптувальника).


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 09 апр 2020 14:05 
Гуру
Гуру

Зарегистрирован:
05 апр 2012 10:20
Сообщения: 797
Откуда: Львівська область
voha писал(а):
Відтепер (з 9 квітня 2020 р., 8:33:28 - build 43930) інструментальний скрипт, в якому є дублі міток, не запускається (і це - добре). Функціональний скрипт, що містить дублі міток, будучи викликаний з інструментального скрипта, дає помилку виконання Duplicate label з посиланням на викликаючий скрипт (і це - правильно, необхідно виправити помилку логіки скриптувальника).


Це не помилки логіки скриптувальників (!), а технічні помилки. І це, на мій погляд, НЕПРАВИЛЬНО З БОКУ РОЗРОБНИКІВ. Спочатку скрипти працювали за одними правилами. Тепер правила змінили і в багатьох скрипти просто перестали через це працювати. Доведеться тепер багатьом не оновлювати свої програми, а працювати на старих версіях. Бо я усім за раз не зможу оновити скрипти.

VictorR писал(а):
...створити окремий текстовий довідник, з усіма функціями, їх описом та можливістью пошуку функії за описовим запитом...

VictorR, на сайті http://digitals.at.ua я виклав повний опис майже усіх скриптових функцій із зручним структуруванням за їх призначенням українською мовою. Можете скопіювати їх в ексель і шукати.

_________________
додатково про скрипти Digitals на www.digitals.at.ua


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 09 апр 2020 15:29 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
fendak писал(а):
Це не помилки логіки скриптувальників (!), а технічні помилки. І це, на мій погляд, НЕПРАВИЛЬНО З БОКУ РОЗРОБНИКІВ.
Хочу вияснити що таке "технічні помилки", але ніяк не вдається. Дядько Google каже, наприклад: Виды ошибок и основные принципы отладки, або ще Класифікація помилок і методи їхнього пошуку.
fendak писал(а):
Спочатку скрипти працювали за одними правилами. Тепер правила змінили і в багатьох скрипти просто перестали через це працювати.
Скрипт працює за тими правилами, які ви написали: якщо те - то на мітку ТАКУ, якщо не те - то на мітку ІНШУ. А якщо у ВАШОМУ скрипті мітка ТАКА=ІНША, то це лише ВАША ПОМИЛКА, а не розробників скриптових функцій, що викликаються командами ВАШОГО скрипта.
fendak писал(а):
Доведеться тепер багатьом не оновлювати свої програми, а працювати на старих версіях. Бо я усім за раз не зможу оновити скрипти
Вибачайте, пане Миколо. Думаю скоріше доведеться вам оновлювати скрипти. Хай не за раз, і не за два. А втім - це залежить від користувачів, які ними користуються. Одне я знаю точно - свої скрипти просто необхідно відлагоджувати... і супроводжувати... щоб ними користувались. Ніхто ж не каже "давайте приберемо необхідність компілювати програмний код (в Delphi), а то при компіляції мого коду воно, гадость така, видає що в мене якась помилка в коді" :wink:.

А за додану розробниками можливість виявлення помилки логіки алгоритму - жирний +.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 09 апр 2020 17:43 
Гуру
Гуру

Зарегистрирован:
05 апр 2012 10:20
Сообщения: 797
Откуда: Львівська область
Під технічною розумію помилку, яка ніяк не впливає на роботоздатність скрипту (не впливала, поки не оновили Digitals)
Ось наприклад:
$MC=@Map.Layers.Count
$N=0
%PochatokSSh3
$N=$N+1
%PochatokSSh3
$Status=@Map.Layers.GetAttributes $N
$Status=@StringPart 7 $Status

Тут друга мітка %PochatokSSh3 не грала абсолютно ніякої ролі. І так би собі й було надалі, але ні, бо комусь це стало дуже заважати.

Просто при створенні скрипту вийшло таке упущення. Якби зразу програма це виявляла якось - то ніяких проблем би не було. Але програма ж зразу це не виявляла. А тепер раптом розробникам захотілося, щоб вона це виявляла. Не гарно получається просто. Я це перероблю. Потрачу час, але перероблю усім. Але просто так не робиться.

Я не вчився на програміста, а самоучка. Тому, роблячи скрипти, виходжу тільки з того, щоб вони працювали. Тестую їх на різноманітних випадках. І досі вони усі працювали. А те, що в коді вийшла ось така чисто технічна помилка - не побачив, бо вона не заважала. А перевіряти код на те, як він грамотно написаний з точки зору підручників з програмування - це не моє. Та й на скільки знаю, щоб писати скрипти не обов'язково бути великим програмістом. Для цього скрипти в програмі і передбачені, щоб можна спрощено зробити те, що потрібно.

Я здогадуюся, чому для вас Voha, цей плюс такий жирний. То й користуйтеся вашим плюсом. А для мене це більше мінус, думаю, як і для багатьох інших користувачів.

Ладно, додали таку перевірку на дублювання міток. Не знаю хто конкретно це додав. Але хоч би по людськи це зробили якось. А то в половини користувачів видає помилку про дублювання міток, а в половини скрипт просто ніяк не реагує на запуск. І думай-гадай, що з ним не так. Можна ж було зробити, щоб хоч нормально інформувало користувачів, в чому причина того, що скрипт не запускається. Але кому це потрібно.

_________________
додатково про скрипти Digitals на www.digitals.at.ua


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 09 апр 2020 20:23 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
fendak писал(а):
Тут друга мітка %PochatokSSh3 не грала абсолютно ніякої ролі. І так би собі й було надалі, але ні, бо комусь це стало дуже заважати. Просто при створенні скрипту вийшло таке упущення.
Правильно. Тільки не "стало заважати", а таки конкретно дошкуляло: сам не один раз мусив аналізувати тисячі рядків лог-файла (ще не вмерла надія на режим відлагодження скриптів зі ScriptDebugger=1 в константах), щоб виловити помилку логіки алгоритму. Дублі міток спричиняли переходи не на ту гілку, на яку треба. Але в мене не було "порожніх" міток! Якщо була мітка - були й команди, що виконувались тоді, коли за логікою не повинні були виконуватись.
fendak писал(а):
Якби зразу програма це виявляла якось - то ніяких проблем би не було. Але програма ж зразу це не виявляла. А тепер раптом розробникам захотілося, щоб вона це виявляла. Не гарно получається просто. Я це перероблю. Потрачу час, але перероблю усім. Але просто так не робиться.
Добре, коли людина думає не лише про себе. Погодьтесь нарешті, це полегшить роботу з розробкою іншим, хто також пише скрипти. І надалі, у нових скриптах, забезпечить відсутність помилок логіки алгоритму. Почитайте, будь-ласка, за посиланням у пості вище - це критичні помилки, які важко виявити.
fendak писал(а):
Я не вчився на програміста, а самоучка. Тому, роблячи скрипти, виходжу тільки з того, щоб вони працювали. Тестую їх на різноманітних випадках. І досі вони усі працювали. А те, що в коді вийшла ось така чисто технічна помилка - не побачив, бо вона не заважала. А перевіряти код на те, як він грамотно написаний з точки зору підручників з програмування - це не моє. Та й на скільки знаю, щоб писати скрипти не обов'язково бути великим програмістом. Для цього скрипти в програмі і передбачені, щоб можна спрощено зробити те, що потрібно.
Все правильно, Миколо. І я також не вчився на програміста: складання скрипта - це ж не справа рук навіть середнього рівня програміста. І не треба бути класним програмістом, щоб зрозуміти: скрипт - це послідовність виконання команд. Послідовність ця визначається у скрипті переходами на мітки, і якщо є дві чи більше міток з однаковою назвою - то і послідовність виконання є помилковою (або одна гілка "мертва", а значить - сміття). То байка, якщо сміття закоментоване символом ";", але ж для помпутера символ "%" щось таки має означати? Чи у вашому випадку - нехай не означає? Так означає? Чи не означає? Для скрипта "%" - спеціальний символ переходу на таку-то послідовність дій, незалежно від того програміст перед компом, чи землевпорядник!
fendak писал(а):
Я здогадуюся, чому для вас Voha, цей плюс такий жирний. То й користуйтеся вашим плюсом. А для мене це більше мінус, думаю, як і для багатьох інших користувачів.
Так можна ж почути програмістів, а поки - що ми маємо:
- для прикладу в ліспроекті: беремось складати цифрову карту, а не хочемо розібратись із типами об'єктів цієї карти, бо це вже бач ГІС (вища наука);
- беремося складати послідовність - а не хочемо робити це послідовно, бо це вже бач супер високого рівня "програмування".
Послідовність ця називається алгоритмом, а слово "алгоритм" ще в школі вчать, і до програмування вищого рівня від алгоритму - як "до неба рачки". Я жодним чином не беруся когось оцінювати та порівнювати. З ким мені ще про скрипти? Мабуть карантин впливає.
fendak писал(а):
...А то в половини користувачів видає помилку про дублювання міток, а в половини скрипт просто ніяк не реагує на запуск. І думай-гадай, що з ним не так. Можна ж було зробити, щоб хоч нормально інформувало користувачів, в чому причина того, що скрипт не запускається. Але кому це потрібно.
Те, що скрипт не запускається, лише підтверджує серйозність вашої помилки. А як цей ящик по вашому має виконати послідовність, якщо вона не визначена? Вимушений ще раз констатувати факт: інструментальний скрипт, в якому є дублі міток, не запускається. Функціональний скрипт, що містить дублі міток, будучи викликаний з інструментального скрипта, дає помилку виконання Duplicate label з посиланням на викликаючий скрипт.

Думаю нам дискусію слід припинити, поза як поняття алгоритму (послідовності виконання операцій) ні вам, ні мені, ні будь-кому іншому не змінити. Як на мене - гарна була дискусія, предметна.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 13 апр 2020 09:55 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 2298
Откуда: Vinnytsia
voha писал(а):
Лишаються:
@Map.FromPLG - ?
@Map.Lock - закриває вміст карти? За яким приципом? Візуально нічого не знаходжу в результаті.
@Map.Object[N].Filter [MinDistance] - ніби фільтрує об'єкти, але за яким принципом?
При запуску функції @Map.CreateExplication видає помилку: CounsilExplCols.txt - не знайдено. Де взяти цей файл?


@Map.FromPLG - PLG - польський текстовий формат, містить інфо по пікетам, а-ля DAT-файл.
@Map.Lock - закриває вміст скриптів карти від дебагера.
@Map.Object[N].Filter [MinDistance] - в об'єкті видаляє відрізки меньші ніж MinDistance
@Map.CreateExplication - Створює експлікацію 15-зем на основі xlt-шаблону.

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals


Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 1235 ]  На страницу Пред.  1 ... 68, 69, 70, 71, 72, 73, 74 ... 83  След.

Часовой пояс: UTC + 2 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 116


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB