Аналитика http://www.geosystema.net/forum/ |
|
Все про скрипти http://www.geosystema.net/forum/viewtopic.php?f=1&t=2809 |
Страница 68 из 83 |
Автор: | agrotexnika [ 23 авг 2019 08:42 ] |
Заголовок сообщения: | Re: Все про скрипти |
Rostyslav писал(а): agrotexnika писал(а): Подскажите функцию для использования в скриптах для вызова или активации "подбора масштаба карты..." добавленную: 01.08.18 Подбор масштаба карты под размер бумаги (Карта|Свойства..., кнопка Подогнать под страницу) Или единственный вариант добраться: <Tab><CR>? масштаб можна встановити через @Map.SetProperties Scale Name|FrameX[1] FrameY[1]|... Как задать масштаб, это не секрет: @Map.Layers.SetState -3 0 @Map.SetProperties 10000 NNaammee @Map.FrameSelected 145 145 10000 Вопрос: Можно попросить добавить в язык скриптов "автоподбор" масштаба, который реализован в кнопке: "Подогнать под страницу" Добавлено в Digitals. 01.08.18 Подбор масштаба карты под размер бумаги (Карта|Свойства..., кнопка Подогнать под страницу) Использование данной реализации не "видоизменяет/крутит" координаты участка, при использовании функции: OBJECTSCALE |
Автор: | VictorR [ 22 окт 2019 18:09 ] | ||
Заголовок сообщения: | Re: Все про скрипти | ||
Підкажіть як реалізувати скриптово або через DMT шаблон підтягування довжин ліній до данної таблички?
|
Автор: | ТОВ Аспект [ 23 окт 2019 15:47 ] |
Заголовок сообщения: | Re: Все про скрипти |
Допоможіть зробити скрипт який би контролював довжини ліній на земельній ділянці. Лінії не повинні перевищувати 200 м. бо я не можу таке осилити %Events.OnFileSave @Map.SelectLayer ID70005 $F=@Map.Selected.GetParameter -10 ;$F1=@StringPart |$F @if $F1=<200 then @Break Додати точку |
Автор: | Dmitry_Zolotar [ 23 окт 2019 18:25 ] |
Заголовок сообщения: | Re: Все про скрипти |
@Map.SelectLayer ID70005 $SO=@Map.SelectedObject $PC=@Map.Object[$SO].Count $CurrentLine=$PC-1 %Loop $L=@Map.Object[$SO].LineLength[$CurrentLine] @if $L>200 then @Goto %MarkLineAndStop @Goto %Exit %NextLine $CurrentLine=$CurrentLine-1 @if $CurrentLine>0 then @Goto %Loop %MarkLineAndStop $CL2=$CurrentLine+1 @Map.Selected.MarkPoints $CurrentLine @Map.Selected.MarkPoints $CL2 @Dialog.Message Довжина відрізку №$CurrentLine - $L > 200м P.S. меню Правка-Добавить точки... (Шаг - 200 м, несквозное добавление) |
Автор: | ТОВ Аспект [ 23 окт 2019 21:36 ] |
Заголовок сообщения: | Re: Все про скрипти |
Дуже Вам вдячний за допомогу. Дякую!!! |
Автор: | fendak [ 06 ноя 2019 21:00 ] |
Заголовок сообщения: | Re: Все про скрипти |
Відкрив для себе, що якщо у властивостях карти шаблону (меню Карта - Властивості) в полі з іменем написати $NM, та якщо скриптом перемінній $NM присвоєно відповідне значення (ПІБ) з файлу XML, то карта при збереженні автоматично буде називатися по імені. Але не можу зрозуміти, як це працює. В одних шаблонах воно працює, в інших ні. В посібнику (автор Д.Золотар) це описано так: Созданный документ получает имя, состоящее из имени шаблона и автоматического суффикса, который задается в поле Имя карты в окне Свойств карты используемого шаблона. В данном случае в шаблоне задана формула -P[34], что приводит к извлечению номера квартала и участка из параметра с соответствующим номером и добавлению их к имени документа. Часто в качестве суффикса используется формула -P[NM], возвращающая имя землевладельца. Якщо просто виділити ділянку і запустити скрипт: $MON=@Map.SelectedObject $PP=@Map.Object[$MON].Parameter[ID7000520] $PC=@XML.NodeCount /Proprietors ProprietorInfo $Proprietors $I=0 $NM= %Loop $I=$I+1 $IsLE=@XML.NodeCount ProprietorInfo[$I]/Authentication LegalEntity $PP @if $IsLE=1 then @Goto %LegalEntity $LN=@XML.XPath ProprietorInfo[$I]/Authentication/NaturalPerson/FullName/LastName $PP $FN=@XML.XPath ProprietorInfo[$I]/Authentication/NaturalPerson/FullName/FirstName $PP $MN=@XML.XPath ProprietorInfo[$I]/Authentication/NaturalPerson/FullName/MiddleName $PP @if $LN= then @Goto %Continue @if $NM<> then $NM=$NM, $NM=$NMгр.$LN $FN $MN @Goto %Continue %LegalEntity $N=@XML.XPath ProprietorInfo[$I]/Authentication/LegalEntity/Name $PP @if $N= then @Goto %Continue @if $NM<> then $NM=$NM, $NM=$NM$N %Continue @if $I<$PC then @Goto %Loop @Dialog.Message $NM присвоївши перемінній $NM з файлу XML ПІБ землевласника, а потім сформувати шаблон через Сервіс-Документи - то це не спрацює. Не спрацьовує це і при простому збереженні карти, у властивостях якої є $NM. Як же воно працює? Бо в деяких шаблонах, які формуються складними скриптами воно працює! В результаті сформований по шаблону звіт зерігається як Схема Іванов Іван Іванович |
Автор: | Poltavan [ 10 ноя 2019 09:22 ] |
Заголовок сообщения: | Re: Все про скрипти |
Доброго здоров'я колеги. Чи є у когось скрипт, що витягує прізвища власників, коли їх 2 та більше, Бо звичайні команди через dmt шаблони бачать лише першого власника. Це якщо отак: XPT(P[ID7000520],"ProprietorInfo/Authentication/LegalEntity/Name") XPT(P[ID7000520],"ProprietorInfo/Authentication/NaturalPerson/FullName/LastName")_XPT(P[ID7000520],"ProprietorInfo/Authentication/NaturalPerson/FullName/FirstName")_XPT(P[ID7000520],"ProprietorInfo/Authentication/NaturalPerson/FullName/MiddleName") Бачить лиш першого власника і все. |
Автор: | fendak [ 10 ноя 2019 17:39 ] |
Заголовок сообщения: | Re: Все про скрипти |
Poltavan писал(а): Чи є у когось скрипт, що витягує прізвища власників, коли їх 2 та більше дивіться на одно повідомлення вище, там якраз такий скрипт. |
Автор: | Anton13 [ 11 ноя 2019 20:00 ] | ||
Заголовок сообщения: | Re: Все про скрипти | ||
Доброго времени суток! Подскажите как реализовать в скрипте манипуляции с надписью: прав. кнопка мышки - развернуть вдоль контура ?
|
Автор: | fendak [ 12 ноя 2019 21:09 ] |
Заголовок сообщения: | Re: Все про скрипти |
Для маніпуляцій з підписами є спеціальні скриптові функції. Спочатку треба видалити старий підпис. Потім створити новий уздовж контура. @Map.Selected.RemoveCaptions idпараметра @Map.Selected.CreateCaptions idпараметра 1 1 1 1 0 0 більш детально можете прочитати ТУТ |
Автор: | Anton13 [ 14 ноя 2019 19:32 ] |
Заголовок сообщения: | Re: Все про скрипти |
fendak писал(а): Для маніпуляцій з підписами є спеціальні скриптові функції. Спочатку треба видалити старий підпис. Потім створити новий уздовж контура. @Map.Selected.RemoveCaptions idпараметра @Map.Selected.CreateCaptions idпараметра 1 1 1 1 0 0 більш детально можете прочитати ТУТ Спасибо! Но тут ситуация немного иначе. Надписи принадлежат объекту-пикет, который лежит на другом объекте-полилиния или отрезок. Команда -вдоль контура- разворачивает надпись параллельно линейному объекту |
Автор: | fendak [ 18 ноя 2019 19:19 ] |
Заголовок сообщения: | Re: Все про скрипти |
[quote="Anton13]"Спасибо! Но тут ситуация немного иначе. Надписи принадлежат объекту-пикет, который лежит на другом объекте-полилиния или отрезок. Команда -вдоль контура- разворачивает надпись параллельно линейному объекту[/quote] Тоді можна ось таким скриптом: $S=@Map.SelCount @If $S<=0 @Break Треба вибрати об'єкти $Obj=@Map.SelectedObject $XY=@Map.Object[$Obj].Point[1] $Nearest=@Map.NearestObject 5 $Obj $XY $Angle=@Map.Object[$Nearest].LineAngle[1] $Angle=@ReplaceChar ,.$Angle $Angle=-$Angle*10+900 $N=0 $C=@Map.Parameters.Count %Start: $N=@Map.NextSelected $N @If $N<=0 @Goto %Finish $I=-10 %NextParam $S=@Map.Object[$N].Caption[$I] @if $S= @Goto %NextCap @Map.Object[$N].Caption[$I] * * * $Angle %NextCap: $I=$I+1 @If $I<$C @Goto %NextParam @Goto %Start %Finish: @Window.Refresh При цьому можете виділити зразу усі точкові об'єкти з підписами, які треба розвернути на той самий кут відносно лінійного об'єкту. |
Автор: | fendak [ 18 ноя 2019 19:20 ] |
Заголовок сообщения: | Re: Все про скрипти |
Anton13 писал(а): "Спасибо! Но тут ситуация немного иначе. Надписи принадлежат объекту-пикет, который лежит на другом объекте-полилиния или отрезок. Команда -вдоль контура- разворачивает надпись параллельно линейному объекту Тоді можна ось таким скриптом: Код: $S=@Map.SelCount @If $S<=0 @Break Треба вибрати об'єкти $Obj=@Map.SelectedObject $XY=@Map.Object[$Obj].Point[1] $Nearest=@Map.NearestObject 5 $Obj $XY $Angle=@Map.Object[$Nearest].LineAngle[1] $Angle=@ReplaceChar ,.$Angle $Angle=-$Angle*10+900 $N=0 $C=@Map.Parameters.Count %Start: $N=@Map.NextSelected $N @If $N<=0 @Goto %Finish $I=-10 %NextParam $S=@Map.Object[$N].Caption[$I] @if $S= @Goto %NextCap @Map.Object[$N].Caption[$I] * * * $Angle %NextCap: $I=$I+1 @If $I<$C @Goto %NextParam @Goto %Start %Finish: @Window.Refresh При цьому можете виділити зразу усі точкові об'єкти з підписами, які треба розвернути на той самий кут відносно лінійного об'єкту, що поруч (в радіусі 5 метрів(можна змінити в скрипті) |
Автор: | Anton13 [ 19 ноя 2019 20:59 ] |
Заголовок сообщения: | Re: Все про скрипти |
fendak писал(а): Anton13 писал(а): "Спасибо! Но тут ситуация немного иначе. Надписи принадлежат объекту-пикет, который лежит на другом объекте-полилиния или отрезок. Команда -вдоль контура- разворачивает надпись параллельно линейному объекту Тоді можна ось таким скриптом: Код: $S=@Map.SelCount @If $S<=0 @Break Треба вибрати об'єкти $Obj=@Map.SelectedObject $XY=@Map.Object[$Obj].Point[1] $Nearest=@Map.NearestObject 5 $Obj $XY $Angle=@Map.Object[$Nearest].LineAngle[1] $Angle=@ReplaceChar ,.$Angle $Angle=-$Angle*10+900 $N=0 $C=@Map.Parameters.Count %Start: $N=@Map.NextSelected $N @If $N<=0 @Goto %Finish $I=-10 %NextParam $S=@Map.Object[$N].Caption[$I] @if $S= @Goto %NextCap @Map.Object[$N].Caption[$I] * * * $Angle %NextCap: $I=$I+1 @If $I<$C @Goto %NextParam @Goto %Start %Finish: @Window.Refresh При цьому можете виділити зразу усі точкові об'єкти з підписами, які треба розвернути на той самий кут відносно лінійного об'єкту, що поруч (в радіусі 5 метрів(можна змінити в скрипті) Дякую! |
Автор: | VictorR [ 30 ноя 2019 18:58 ] |
Заголовок сообщения: | Re: Все про скрипти |
Колись десь бачив скрипт який додає межові знаки через кожні 200 м. Підкажіть де шукати?) |
Страница 68 из 83 | Часовой пояс: UTC + 2 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |