А тепер поближче
Чекаю ваших відгуків! Особливість такої виноски те що в полі не потрібно гортати купу листів та бистрота підготовки, саме на цю підготовку в мене пішло 20 хв (приблизно), тобто координати стнацій в мене були вже відомі!
Жду ваших питань, критеріїв і т. д. і т. п. Дуже хочу побачить як такий об’єм буде виглядать у вашому варіанті і скільки це у вас займе часу?
Особливо хочу почути думку Піпи ![]()
Круто!
Я 3 рази передививсь, буду пробувать! Трохи багато операцій
Я теж якось зроблю ролік, може й ви якось спростите виноску ![]()
P.S. А проектні точки я можу задать в ручному режимі? Щоб потім в журналі не пригать!
А Ви можете скинуть відео, як створюється “Викопіюваня”?
Чого воно у Вас все як не для пользователя? Деякі прості речі такими далекими путями робляться!
Перепрошую - вставляюсь в тему. Скажіть будь-ласка, чи є функція передачі управління (в тому числі фокуса) іншій програмі (вікну) з посиланням результату виконання скрипта (наприклад скрипта обробки події) на порт TCP/IP? Така функція заставила би Digitals останнім кроком скрипта активувати вікно зовнішньої програми (для прикладу Excel).
Треба забезпечити роботу Digitals паралельно з відображенням результатів у Excel, і зворотньо. Якщо сервер - Digitals, клієнт - Excel, а між ними налагоджено потоковий канал зв’язку, якою функцією забезпечити чисто передачу даних з Digitals в Excel?
Ніяк не можу знайти функції @Map.Parameters.Delete Code, чи є така? Довго шукав у списку - ась!
Нужна функция, аналог Map.SortByParameter ParameterIndex +/- для слоев (Map.SortByLayer LayerIndex +/-).
Непонятно что она должна делать.
Что значит посортировать все объекты на карте по одному указанному в LayerIndex слою?
Если вы хотите сортировать объекты карты по значению ID их слоев, то это можно сделать через Map.SortByParameter -7 (служебный параметр -7 содержит ID слоя объекта).
Также можно сортировать по имени слоя, если использовать Map.SortByParameter -5.
А она точно нужна? ![]()
Дело в том что при удалении параметра из середины списка слетит вся их последовательная нумерация и доступные слоям параметры перепутаются. Так что удалять можно будет разве что свои, добавленные в конец списка, параметры.
Дякую, розібрався. Мова йшла дійсно за останні у списку параметри. Справа в тому, що, зовнішня програма має очистити і заповнити (оновити) значення окремих параметрів усих об’єктів шару. Всі відповідні для цього функції працюють з селектованими об’єктами, а воно, якось, не дуже гарно получається при автоматизації. Мабуть треба якось відключити на певний час оновлення екрану. От і спало на думку - спочатку видалити параметри, а потім добавити. Але якщо так - хай так.
Питання тепер в іншому. Як повернути порядковий номер шару в карті за відомими назвою шару або його ID? Всі функції для роботи з шаром ідентифікують його за порядковим номером у списку шарів. Але як бути, коли не відомо - є вже шар в карті чи нема? Аналізуєм список шарів карти (@Map.Layers.List) за назвою або ID, якщо шару нема - додаємо в хвіст списку (@Map.Layers.Add Code Type Name) вказавши ID, тип і назву. Отримуєм порядковий номер і працюємо з шаром за порядковим номером. А якщо шар з такою назвою та ID в карті вже є - треба дізнатись порядковий номер за відомим іменем або ID, інакше до функцій стосовно шарів не підходь? Як варіант є @Map.ReplaceTemplate Filename, де Filename - карта з заздалегідь спланованим порядком шарів у списку. Буду пробувати.
Лучше сделайте свою функцию которая перебирает весь список слоев, используя функции:
@Map.Layers.Count
@Map.Layers.Get Number
и возвращает номер слоя с заданным ID, или 0, если такой слой не найден.
Функции работают не только по индексу, но и по ID. Для этого вместо индекса нужно подставить строку вида IDXXXXX, где XXXXX это код слоя. Но узнать, существует ли слой с определенным кодом действительно невозможно. Кроме как перебирать, как уже советовали, в скрипте все слои в поисках нужного номера. Но мы можем добавить готовую функцию. Что-то вроде @Map.Layers.IDToIndex, которая вернет номер слоя с указанным кодом (или 0 если такой слой не найден). Ну и аналогичную для параметров.
Варіант перебору можливий тільки у скрипті. До теми наступне.
Я хочу використати канал зв’язку Excel-Digitals, використовуючи ws2_32.dll, але не уявляю собі що таке багатопоточність (надіюсь “розгребу” функцію для прослуховування отриманих від Digitals-а відповідей). Задумано використати скрипти автозапуску:
- Excel в процедурі автозапуску при внесенні даних посилає команду в Digitals виконати скрипт записаний для кнопки панелі інструментів, результатом роботи якого (скрипта) буде, наприклад, створення полігону з координатами вказаними в Excel), та закінчує процедуру. Функції запуску скрипта через натискання кнопки панелі інструментів немає, але посилання відповідного віконного повідомлення в дочірнє вікно (кнопку) вікна верхнього рівня (панелі інструментів) ініціювало б натискання цієї кнопки. Тут доступність різного набору кнопок з різними скриптами мала б забезпечитись наявністю відповідного файла *.tlb
- При виникненні події вказаній в скрипті прикріпленому до активовованої кнопки панелі інструментів Digitals-a, скрипт виконується, а дані (як результат виконання скрипта) відповідною функцією (якої також немає) відсилаються на порт TCP/IP (на сокет Excel, який прослуховується). При отриманні відповіді, Excel виконує відповідні розрахунки та відображає результат.
Функція @Map.Layers.IDToIndex, як на мене, згодилася б по-любому при роботі з різними версіями карт і різними шарами чи параметрами, а як що до описаного вище?
Якщо цей хід реальний - треба відповідні функції, якщо це маячня - буду шукати щось інше.
А так Слабо? ![]()
Дааааа, это было круто. Мне бы такую панельку… ![]()
и мне тоже. ну если будете делиться))))
А тут багато землевпорядників та геодезистів? Таке відчуття шо тут одні програмісти!! В мене багато питань по створеню шаблонів ![]()


