Аналитика

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

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




Начать новую тему Ответить на тему  [ Сообщений: 1369 ]  На страницу Пред.  1 ... 43, 44, 45, 46, 47, 48, 49 ... 92  След.
Автор Сообщение
 Заголовок сообщения: Re: Запрос на функцию
СообщениеДобавлено: 15 янв 2013 12:11 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 2298
Откуда: Vinnytsia
voha писал(а):
Sergey Oleynik писал(а):
В Service Layer никакие объекты кроме рамки карты и опорных точек находится не могут. ...
Підкажіть, будь-ласка, як можна змінити статус службового шару :?: Адже команда @Map.Layers.SetState -3 0 не працює.
В скрипті треба дати можливість користувачу вибрати фрагмент карти для збереження/друку. Позначивши рамку карти, скрипт очікував би, поки користувач розмістить рамку карти, схопивши за центр рамки.
Код:
@Map.Layers.SetState -3 0
@Map.SelectLayer -3
@Dialog.WaitBox Виберіть фрагмент обмежений рамкою карти

В оновленій версії ged.exe команди @Map.Layers.SetState та @Map.SelectLayer працюють і для рамки карти.

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


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос на функцию
СообщениеДобавлено: 15 янв 2013 12:14 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 2298
Откуда: Vinnytsia
voha писал(а):
Є полігон - квартал, що містить внутрішні полігони та "купу" лінійних і точкових об'єктів.
Задача - при позначеному полігоні квартала вибрати тільки полігони усередині позначеного.
Вирішення:
$NumObg=@Map.SelectedObject
Вибрати | Усередині позначеного
@Map.DeselectObject $NumObg
...

На місці ... має бути функція @Map.SelectByLayersStyleSelected List, яка серед позначеного вибрала б об'єкти в шарі стилю тільки полігони.
Взагалі, в групі функцій Map.Select, хотілося б бачити @Map.SelectByLayersStyle List.
Меню Правка>Вибрати містить достатню кількість пунктів вибірки, але опції "серед позначених" немає. Порадьте, будь-ласка, як вирішити таку задачу :?:

Код:
$NumObg=@Map.SelectedObject
Вибрати | Усередині позначеного
@Map.DeselectObject $NumObg
$SO=0
%Loop
$SO=@Map.NextSelected $SO
@if $SO=0 then @Goto %Continue
$Closed=@Map.Object[$SO].Closed
@if $Closed=0 then @Map.DeselectObject $SO
@Goto %Loop
%Continue

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


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос на функцию
СообщениеДобавлено: 15 янв 2013 12:29 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
Чемно дякую. А можна ще питання:
@IterateObjects Scriptname - Повторяет скрипт для каждого обьекта карты, передавая его номер как параметр.
Будучи викликаною зі скрипта Scriptname_1, функція виконує Scriptname_2 від початку до кінця рівно стільки раз, скільки об'єктів в карті, причому з кожним новим проходженням скрипта Scriptname_2 його параметр $Parameters матиме значення номера об'єкта карти. Після того, як скрипт Scriptname_2 пропрацює для усіх об'єктів карти, управління передається скрипту Scriptname_1 для виконання команд, що йдуть в порядку після @IterateObjects Scriptname. Скрипт Scriptname_2 може знаходитись як в теці Library, так і в панелі інструментів.
Багато "нарозмишляв", але чи все правда :?: Поправте, будь-ласка, якщо не так.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос на функцию
СообщениеДобавлено: 16 янв 2013 07:10 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
voha писал(а):
@IterateObjects Scriptname - Повторяет скрипт для каждого обьекта карты, передавая его номер как параметр. Будучи викликаною зі скрипта ...

1. Чи зобов'язаний працювати скрипт-3 (який по суті є функцією) зі своїми вхідними параметрами, викликаний командою зі скрипта-2, що в свою чергу був викликаний зі скрипта-1 командою @IterateObjects Scriptname :?: Чи не буде конфліктів між $Parameters.

2. Якщо треба визначити у скрипті, чи доступний параметр 21 шару 21, використовуємо @Map.Layers.GetValidParameters
Тут невеличкі фрагменти логу в різних варіантах:
$LayValParam=MAP.LAYERS.GETVALIDPARAMETERS 99
99 2 4 5 6 7 8
$InLayValParam21=CALC pos("21","99 2 4 5 6 7 8")
0
Де гарантія що скрипт, перебираючи шари, не наткнеться на шар, з порядковим номером 21 :?: Тоді:
$InLayValParam21=CALC pos("21","21 2 4 5 6 7 8") - неправильний результат, оскільки насправді параметр 21 шару 21 недоступний;
якщо скрипту трапиться CALC pos(" 21 ","34 2 4 5 6 7 8 21") - неправильний результат, оскільки насправді параметр 21 шару 34 доступний.
Голову ламаю, і думаю: шкода, що немає функції перевірки, чи доступний параметр для шару,чи ні


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос на функцию
СообщениеДобавлено: 16 янв 2013 12:15 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 2298
Откуда: Vinnytsia
Скрипт є функцією яка повертає 1, якщо заданий параметр доступний шару, інакше повертає 0. Аргументами функціє є номер(або ID) шару та номер(не ID) параметра.
Приклад:
Код:
$S=%Library.CheckParamValidity 1 25
@if $S=1 then @Dialog.Message Параметр 25 доступен слою 1
@if $S=0 then @Dialog.Message Параметр 25 не доступен слою 1

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


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос на функцию
СообщениеДобавлено: 17 янв 2013 14:30 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
Dmitry_Zolotar писал(а):
Скрипт є функцією яка повертає 1, якщо заданий параметр доступний шару, інакше повертає 0...
Просте й елементарне вирішення. Дуже дякую. А як, що-до питання з $Parameters :?: Поки виплутався, звівши всі три скрипти в один, але надалі, хотілося-б використовувати скрипти-функції. Яке значення буде мати службова змінна $Parameters в межах скрипта скрипт-2 викликаного функцією @IterateObjects скрипт-2 після виконання функції скрипт-3 зі своєю $Parameters :?: Дуже вже важко прослідкувати лог операцій, при розгалуженій організації скриптів.


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

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 2298
Откуда: Vinnytsia
Глобальних змінних в скриптах немає, зона видимості усіх міток та змінних(в тому числі $Parameters та $Result) - скрипт, тобто змінні або міткі з однаковим імям, обявлені в різних скриптах - різні, навіть якщо ці скрипти викликають один одного.

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


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос на функцию
СообщениеДобавлено: 18 янв 2013 18:10 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
Дякую за роз'яснення.
Наступним до вирішення є питання: функція @Map.Selected.CreateCaptions ParamIndex Orientation Position VAlign HAlign ShiftX ShiftY створює і оригінальним способом розміщує підпис в найбільш "підходящому" для цього місці полігона. Якщо цей полігон "чудернацької", витягнутої в смужку форми, підпис розміщується не в геометричному центрі полігона, а в "достатньому" місці полігона. Цікавий алгоритм. Якби його можна було застосувати для створення в цій загадковим способом визначеній точці точкового об'єкта. Чи цей запит можливий для реалізації функцією :?:


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос на функцию
СообщениеДобавлено: 22 янв 2013 13:30 
Гуру
Гуру

Зарегистрирован:
14 окт 2010 16:40
Сообщения: 265
/Есть ли функция обрезки линии до определенной длины?


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос на функцию
СообщениеДобавлено: 22 янв 2013 16:53 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 823
Откуда: Ліспроект Володимир Вовчанський
Denidz писал(а):
/Есть ли функция обрезки линии до определенной длины?

@Map.Selected.Prolong Length - Продлевает помеченный объект (линию) с обеих концов на заданную длин.
Якщо Length число з мінусом - вкорочує лінію з обох боків, далі - справа арифметики та інших функцій.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос на функцию
СообщениеДобавлено: 22 янв 2013 22:18 
Гуру
Гуру

Зарегистрирован:
14 окт 2010 16:40
Сообщения: 265
voha писал(а):
Denidz писал(а):
/Есть ли функция обрезки линии до определенной длины?

@Map.Selected.Prolong Length - Продлевает помеченный объект (линию) с обеих концов на заданную длин.
Якщо Length число з мінусом - вкорочує лінію з обох боків, далі - справа арифметики та інших функцій.

Почти то что надо, но как бы сделать чтобы обрезка происходила не с обоих концов относительно центра, а чтоб один конец был зафиксирован на месте, а другой перемещался? буду очень благодарен за помощь!


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос на функцию
СообщениеДобавлено: 23 янв 2013 12:02 
Специалист
Специалист

Зарегистрирован:
20 июн 2012 10:49
Сообщения: 22
Используй @Map.Object[N].Point[N] (примерно так @Map.Object[$n].Point[$CHt2] $dx $dy $z12) новые координаты можно получить из дир. угла исходной линии и нужной дистанции


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос на функцию
СообщениеДобавлено: 24 янв 2013 21:22 
Гуру
Гуру

Зарегистрирован:
14 окт 2010 16:40
Сообщения: 265
Denidz писал(а):
voha писал(а):
Denidz писал(а):
/Есть ли функция обрезки линии до определенной длины?

@Map.Selected.Prolong Length - Продлевает помеченный объект (линию) с обеих концов на заданную длин.
Якщо Length число з мінусом - вкорочує лінію з обох боків, далі - справа арифметики та інших функцій.

Почти то что надо, но как бы сделать чтобы обрезка происходила не с обоих концов относительно центра, а чтоб один конец был зафиксирован на месте, а другой перемещался? буду очень благодарен за помощь!

Сенкс! То что надо!
Вот наваял простой скриптец:
$Sel=@Map.NextSelected
$Dir=@Map.Object[$Sel].Parameter[1] /из этого параметра у меня берется дир угол
$x=@Map.Object[$Sel].Point[1].x
$y=@Map.Object[$Sel].Point[1].y
$dx=@Calc $x+Cos($Dir)*20
$dy=@Calc $y+Sin($Dir)*20
@Map.Object[$Sel].Point[2] $dx $dy 0
Вид | Обновить
Но вот понять не могу - обрезается линия у меня до 20 м, но ее направление меняется. а почему так происходит кто-то подскажет?


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос на функцию
СообщениеДобавлено: 25 янв 2013 00:25 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 2298
Откуда: Vinnytsia
Denidz писал(а):
Вот наваял простой скриптец:
Код:
$Sel=@Map.NextSelected
$Dir=@Map.Object[$Sel].Parameter[1] /из этого параметра у меня берется дир угол
$x=@Map.Object[$Sel].Point[1].x
$y=@Map.Object[$Sel].Point[1].y
$dx=@Calc $x+Cos($Dir)*20
$dy=@Calc $y+Sin($Dir)*20
@Map.Object[$Sel].Point[2] $dx $dy 0
Вид | Обновить
Но вот понять не могу - обрезается линия у меня до 20 м, но ее направление меняется. а почему так происходит кто-то подскажет?

Подозреваю, что угол у вас в градусах, а Cos() и Sin() принимают аргумент в радианах.

$Sel=@Map.SelectedObject
$Dir=@Map.Object[$Sel].Parameter[1] /из этого параметра у меня берется дир угол
$x=@Map.Object[$Sel].Point[1].x
$y=@Map.Object[$Sel].Point[1].y
$PI=3.1415927
$dx=@Calc $x+Cos($Dir*$PI/180)*20
$dy=@Calc $y+Sin($Dir*$PI/180)*20
@Map.Object[$Sel].Point[2] $dx $dy 0
Вид | Обновить

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


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос на функцию
СообщениеДобавлено: 25 янв 2013 09:24 
Гуру
Гуру

Зарегистрирован:
14 окт 2010 16:40
Сообщения: 265
Спасибо, ошибка была именно в этом.


Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 1369 ]  На страницу Пред.  1 ... 43, 44, 45, 46, 47, 48, 49 ... 92  След.

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


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

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


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

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