Аналитика

Цифровая фотограмметрия, картография и землеустройство
Текущее время: 25 апр 2024 12:30

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




Начать новую тему Ответить на тему  [ Сообщений: 1236 ]  На страницу Пред.  1 ... 29, 30, 31, 32, 33, 34, 35 ... 83  След.
Автор Сообщение
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 28 фев 2015 08:47 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
Доброї пори доби. Хочу поділитись таким спостереженням, стосовно скриптової функції @Map.Selected.Layer - "Возвращает/изменяет слой помеченных объектов, например @Map.Selected.Layer 5".
Вказана функція змінює шар лише активного об'єкта.

Прошу розробників перевірити @Map.Selected.Layer. Інакше, щоб змінити у скрипті шар для всіх позначених, доводиться перебирати усі позначені в циклі, застосовуючи @Map.Object[N].Layer - "Возвращает/изменяет слой объекта"

Ще одне питання. Чому, при копіюванні будь-якого об'єкта з однієї карти в іншу копіюється і заміняється при вставці назва карти у властивостях карти :?:

Дякую.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 02 мар 2015 08:36 
Администратор
Администратор

Зарегистрирован:
28 авг 2004 17:19
Сообщения: 1009
Доброго дня Володимире,

Для зміни шару всіх помічених об'єктів використовуйте функцію @Map.Selected.ChangeLayer.

Назва, параметри рамки та масштаб карти змінюються тільки при копіюванні першого об'єкту у чисту карту.

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


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

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


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

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

Є така ситуація:
- скрипт обробки події %Events.OnParametersChange, назвем його скрипт-1, запускається в результаті зміни значення параметра P[1] і викликає "функціональний" скрипт F1;
- скрипт F1 відпрацьовує, створюючи якийсь-там, йому потрібний об'єкт N, виконуючи розрахунки і повертає у скрипт-1 результат - мовляв "розрахунки проведені, але за їх результатами, треба відмінити зміну параметра P[1]".

Якщо для відміни зміни значення параметра P[1] застосувати @Map.Undo.Undo, то відміниться остання команда, виконана у скрипт F1 (створення об'єкта N), а не зміна зміна значення параметра P[1].

Є якесь рішення, але я не уявляю собі, як застосовувати початок групи Undo, продовження групи Undo.
@Map.Undo.SaveObjectParameters Number також не підходить, адже скрипт-1 запускається лише по факту зміни значення параметра.

Дуже вдячний за підтримку.

P.S. Може є зміст додати обробку події "перед зміною значення параметра" - %Events.OnParametersBeforChange? Так, є обробка події "перед збереженням карти", де змінна $Result=1 якщо карту не зберігати. Але у випадку зі зміною значення параметра/параметрів, необхідно мати можливість у скрипті оперувати обома значеннями, до зміни і після зміни.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 05 мар 2015 12:55 
Эксперт
Эксперт

Зарегистрирован:
09 сен 2014 19:26
Сообщения: 97
Підкажіть будь-ласка. Чи є функція яка закриває відкриті карти по їх іменам.

Наприклад в діджиталі відкрито 4 карти 1000.dmf, 2000.dmf, 5000.dmf та Схема.dmf. Мені необхідно щоб скрипт автоматично закрив 1000.dmf та 5000.dmf...Дякую.


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

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
sergykydr писал(а):
Підкажіть будь-ласка. Чи є функція яка закриває відкриті карти по їх іменам...
Наскільки я знаю - лише за порядковим номером карти, командами @CloseMap [MapNumber] - "закриває карту з порядковим номером MapNumber без запиту на збереження" або @FileClose - "закриває активну карту з запитом про збереження при наявності не збережених змін".

Маючи лише коротку назву карти, треба в скрипті перебрати всі відкриті карти (@MapCount - "повертає кількість відкритих карт"), застосувавши для кожної з них @Map.ClearShortFilename - "повертає коротке ім"я карти без шляху та розширення, якщо ім'я чергової карти співпадає з потрібним ім'ям - застосувати @CloseMap [MapNumber], або активувати карту @ActivateMap Number з черговим номером і тоді з запитом про збереження @FileClose.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 05 мар 2015 15:56 
Эксперт
Эксперт

Зарегистрирован:
09 сен 2014 19:26
Сообщения: 97
vohа дякую за відповідь. Але ні як не можу зрозуміти значення слова "повертає", адже багато функцій їм описується та логічно його привязати ні як не можу...


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 05 мар 2015 20:25 
Специалист
Специалист

Зарегистрирован:
21 дек 2013 22:52
Сообщения: 40
Напишите, пожалуйста, каким скриптом можно пометить только те объекты одного слоя на карте, параметр которого не заполнен. :?:


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

Зарегистрирован:
06 июл 2009 08:22
Сообщения: 443
Откуда: Старобельск
@Map.SelectLayer ID20000
@Map.SelectByParametersSelected 1|4=

20000 - ID слоя, в котором лежат искомые объекты;
1 - количество параметров, по значениям которых осуществляется поиск;
4 - номер искомого параметра.

_________________
П. Вечеров


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

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

carnivoro писал(а):
каким скриптом можно пометить только те объекты одного слоя на карте, параметр которого не заполнен.
@Map.FindByParameters Count|List - "позначає об'єкти за значеннями їхніх параметрів. Якщо до виконання функції в карті будуть позначені об'єкти, функція попередньо знімає позначку з усіх об'єктів карти"
Наприклад:
@Map.FindByParameters 2|-7=10000108|13=
Позначить всі об'єкти карти, значення параметра P[-7] "ID Шару" яких рівне 10000108 і значення параметра P[13] не заповнене. В прикладі вказуються дві умови: (-7=10000108) і (13=), тому параметром функції задаєм (2|-7=10000108|13=). Якби було три умови, припустим по параметрам з порядковими номерами в менеджері параметрів -7, 13 і 24 - писали б, наприклад: @Map.FindByParameters 3|-7=10000108|13=|24<999.


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

Зарегистрирован:
05 апр 2012 10:20
Сообщения: 797
Откуда: Львівська область
sergykydr писал(а):
Підкажіть будь-ласка. Чи є функція яка закриває відкриті карти по їх іменам.

Наприклад в діджиталі відкрито 4 карти 1000.dmf, 2000.dmf, 5000.dmf та Схема.dmf. Мені необхідно щоб скрипт автоматично закрив 1000.dmf та 5000.dmf...Дякую.


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

$Shema=@ActivateMap
$5000=$Shema-1
$2000=$Shema-2
$1000=$Shema-3
@CloseMap $1000
@CloseMap $5000

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 06 мар 2015 19:31 
Эксперт
Эксперт

Зарегистрирован:
09 сен 2014 19:26
Сообщения: 97
fendak писал(а):
Так підозрюю, ви формуєте звіт через Сервіс/Документи і вам видає одразу ці 4 каррти. Дві із них вам не потрібні. Так, про всяк випадок, скажу, що їх можна просто видалити з папки і вони не будуть більше формуватися. Але, якщо це не підходить, тоді вам підійде щось на зразок такого скрипту:

$Shema=@ActivateMap
$5000=$Shema-1
$2000=$Shema-2
$1000=$Shema-3
@CloseMap $1000
@CloseMap $5000

Я все намагаюсь автоматизувати створення документу Дмт шаблоном в необхідному мені масштабі)
Ваш скрипт дійсно дає початок новій ідеї щодо цього)

А дана функція не підійде @GetMapNumber Filename?


Іше додам: Майже знайшов то що мені потрібно, це функція - @Map.SetProperties Scale Name|FrameX[1] FrameY[1]|...
але ні як не можу розібратися з нею до кінця, судячи з її опису вона змінює параметри в наступному меню:

Вложение:
1.jpg
1.jpg [ 93.16 Кб | Просмотров: 9345 ]


відповідно задавши Scale змінюється масштаб, але що прописати тут Name|FrameX[1] FrameY[1]|... щоб всі ці значення не змінювались?


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

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
sergykydr писал(а):
...що прописати тут Name|FrameX[1] FrameY[1]|... щоб всі ці значення не змінювались?
Якщо треба щоб значення не мінялось, вказуйте * заміст значення.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Все про скрипти
СообщениеДобавлено: 07 мар 2015 15:11 
Эксперт
Эксперт

Зарегистрирован:
09 сен 2014 19:26
Сообщения: 97
voha, дякую за відповідь але всеодно якщо я ставлю * наприклад в полі name то назва документу міняється на *.


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

Зарегистрирован:
05 апр 2012 10:20
Сообщения: 797
Откуда: Львівська область
змінити тільки масштаб карти, щоб не змінювались інші значення, можна ось таким скриптом:
$NovyiMashtab=1000
$Vlastyvosti=@Map.GetProperties
$Mashtab=@StringPart 1 $Vlastyvosti
$Reshta=@Calc Replace("$Vlastyvosti","$Mashtab","",0,0)
$Reshta=@DequoteText $Reshta
$Reshta=@Calc TrimLeft("$Reshta")
@Map.SetProperties $NovyiMashtab $Reshta


Але що воно вам дасть? Адже разом із масштабом змінюється і розмір відображення тексту на карті.

Краще використовувати автомасштаб OBJECTSCALE в шаблоні dmt. Проте, він не підходить для планів, на яких після формування ще треба щось домальовувати по заданих довжинах чи площі. Я, наприклад, в таких випадках використовую інший скрипт. Спочатку він формує шаблон в оригінальному масштабі. А потім у відповідності до того, наскільки великий розмах об'єктів карти, вирізає і вставляє всі об'єкти у іншому масштабі. Але цей скрипт в мене великий і включає весь процес, починаючи від відкриття файлу і закінчуючи друком, з послідовним виведенням діалогів. Думаю, у вас вже є нарис коду, який підбирає відповідний масштаб в залежності від розмаху чи від чогось іншого, якщо ви задалися питанням, як змінити масштаб. А для вставки в потрібному масштабі можете використати цей код:

;виділяємо Земельну ділянку, угіддя, суміжники і все інше
@Map.SelectLayer ID70005
Вибрати | Усередині позначеного
Вибрати | Усі що примикають
;вирізаємо і вставляємо в іншому масштабі автоматично
@Map.Cut
@SendChars 1000<CR>
Спеціальна вставка | В іншому масштабі...


цифру 1000 можна замінити певною змінною. Скажімо,

якщо площа об'єкта більше 2 га то змінна=2000
$Obj=ID70005
$SDil=@Map.Object[$Obj].Parameter[ID7000516]
@if $SDil>2 then $Mashtab=2000

, якщо площа об'єкта більша 0,2 га і менша 2,00 га то змінна=1000 ... і т.д.
@If ("$SDil">"0.2") and ($SDil<2) then $Mashtab=1000

Взагалі, sergykydr, цікаво дізнатися, як ви збираєтеся викликати шаблони з відповідними масштабами, через які умови?

sergykydr писал(а):
А дана функція не підійде @GetMapNumber Filename?


Підійде:
$1000=@GetMapNumber C:\Digitals\Назва папки.dmt\1000.dmf
$2000=@GetMapNumber C:\Digitals\Назва папки.dmt\2000.dmf
$5000=@GetMapNumber C:\Digitals\Назва папки.dmt\5000.dmf
$Shema=@GetMapNumber C:\Digitals\Назва папки.dmt\Схема.dmt

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 1236 ]  На страницу Пред.  1 ... 29, 30, 31, 32, 33, 34, 35 ... 83  След.

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 294


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

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