Аналитика
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 шаблон підтягування довжин ліній до данної таблички?

Вложения:
.jpg
.jpg [ 92.83 Кб | Просмотров: 7773 ]

Автор:  ТОВ Аспект [ 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: Все про скрипти

Доброго времени суток! Подскажите как реализовать в скрипте манипуляции с надписью: прав. кнопка мышки - развернуть вдоль контура ?

Вложения:
.jpg
.jpg [ 54.01 Кб | Просмотров: 7582 ]

Автор:  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/