Аналитика
https://geosystema.net/forum/

Все про скрипти
https://geosystema.net/forum/viewtopic.php?f=1&t=2809
Страница 78 из 83

Автор:  Denidz [ 10 апр 2021 19:36 ]
Заголовок сообщения:  Re: Все про скрипти

Поиск самого длинного ребра:
$Obj=@Map.SelectedObject
@if $Obj=0 then @Break
;кол-во ребер в полигоне
$LineCount=@Map.Object[$Obj].Count
$LineCount=$LineCount-1
$MaxLength=0
$L=0
%loop
$L=$L+1
@if $L=$LineCount then @Goto %End
$Length=@Map.Object[$Obj].LineLength[$L]
@if $MaxLength<$Length then $MaxLength=$Length
@if $L<$LineCount then @Goto %loop
@Dialog.Message $MaxLength
Что значит построить отрезок по этой стороне? Отрезок будет равен длинной стороне?

Автор:  S@SH [ 10 апр 2021 19:46 ]
Заголовок сообщения:  Re: Все про скрипти

Denidz писал(а):
Поиск самого длинного ребра:
$Obj=@Map.SelectedObject
@if $Obj=0 then @Break
;кол-во ребер в полигоне
$LineCount=@Map.Object[$Obj].Count
$LineCount=$LineCount-1
$MaxLength=0
$L=0
%loop
$L=$L+1
@if $L=$LineCount then @Goto %End
$Length=@Map.Object[$Obj].LineLength[$L]
@if $MaxLength<$Length then $MaxLength=$Length
@if $L<$LineCount then @Goto %loop
@Dialog.Message $MaxLength
Что значит построить отрезок по этой стороне? Отрезок будет равен длинной стороне?

Да. Идентичен длинной стороне.

Автор:  fendak [ 10 апр 2021 22:57 ]
Заголовок сообщения:  Re: Все про скрипти

S@SH писал(а):
Да. Идентичен длинной стороне.

;нижче вкажіть id шару нового об'єкта
$LIDNewOby=20000
$Obj=@Map.SelectedObject
@if $Obj=0 then @Break
$LineCount=@Map.Object[$Obj].Count
$LineCount=$LineCount-1
$MaxLength=0
$L=0
$L2=1
$XY1=0
$XY2=0
%loop
$L=$L+1
@if $L=$LineCount then @Goto %End
$Length=@Map.Object[$Obj].LineLength[$L]
@if $MaxLength<$Length then $XY1=@Map.Object[$Obj].Point[$L]
@if $MaxLength<$Length then $L2=$L+1
@if $MaxLength<$Length then $XY2=@Map.Object[$Obj].Point[$L2]
@if $MaxLength<$Length then $MaxLength=$Length
@if $L<$LineCount then @Goto %loop
$NewObject=@Map.NewObject id$LIDNewOby
@Map.Object[$NewObject].Point[1] $XY1
@Map.Object[$NewObject].AddPoint $XY2
@Map.RefreshObject $NewObject
@Map.DeselectAll
@Map.SelectObject $NewObject

Автор:  S@SH [ 11 апр 2021 07:45 ]
Заголовок сообщения:  Re: Все про скрипти

fendak писал(а):
S@SH писал(а):
Да. Идентичен длинной стороне.

;нижче вкажіть id шару нового об'єкта
$LIDNewOby=20000
$Obj=@Map.SelectedObject
@if $Obj=0 then @Break
$LineCount=@Map.Object[$Obj].Count
$LineCount=$LineCount-1
$MaxLength=0
$L=0
$L2=1
$XY1=0
$XY2=0
%loop
$L=$L+1
@if $L=$LineCount then @Goto %End
$Length=@Map.Object[$Obj].LineLength[$L]
@if $MaxLength<$Length then $XY1=@Map.Object[$Obj].Point[$L]
@if $MaxLength<$Length then $L2=$L+1
@if $MaxLength<$Length then $XY2=@Map.Object[$Obj].Point[$L2]
@if $MaxLength<$Length then $MaxLength=$Length
@if $L<$LineCount then @Goto %loop
$NewObject=@Map.NewObject id$LIDNewOby
@Map.Object[$NewObject].Point[1] $XY1
@Map.Object[$NewObject].AddPoint $XY2
@Map.RefreshObject $NewObject
@Map.DeselectAll
@Map.SelectObject $NewObject

:shock: Гениально... Спасибо....

Автор:  matskows [ 19 апр 2021 08:15 ]
Заголовок сообщения:  Re: Все про скрипти

voha писал(а):
-Ivan- писал(а):
Добрий день, допоможіть добити скрипт, потрібно щоб при виборі одного з масштабів відкривався потрібний шаблон.
Код:
$Sit=@Dialog.Select ВИБЕРІТЬ МАСШТАБ|1000|2000|5000|10000
;Якщо масштаб не вибрано - припинення виконання
@If "$Sit"="" then @Break Не вибрано масштаб
;Якщо вибрано 1000 - перехід на мітку %1000
@If $Sit=1000 then @Goto %1000
@If $Sit=2000 then @Goto %2000
@If $Sit=5000 then @Goto %5000
;Якщо вибір зроблено, але не 1000, 2000 або 5000 - значить вибрано 10000
@ExecuteDocument 1_Сит.план (10000).dmt
@Goto %EndSelect
%1000
@ExecuteDocument 1_Сит.план (1000).dmt
@Goto %EndSelect
%2000
@ExecuteDocument 1_Сит.план (2000).dmt
@Goto %EndSelect
%5000
@ExecuteDocument 1_Сит.план (5000).dmt
%EndSelect
Назви міток починаються символом %, змінних - символом $.

Автор:  matskows [ 19 апр 2021 16:06 ]
Заголовок сообщения:  Re: Все про скрипти

$Sit=@Dialog.Select ВИБЕРІТЬ МАСШТАБ|1000|2000|5000|10000
;Якщо масштаб не вибрано - припинення виконання
@If "$Sit"="" then @Break Не вибрано масштаб
;Якщо вибрано 1000 - перехід на мітку %1000
@If $Sit=1000 then @Goto %1000
@If $Sit=2000 then @Goto %2000
@If $Sit=5000 then @Goto %5000
;Якщо вибір зроблено, але не 1000, 2000 або 5000 - значить вибрано 10000
@ExecuteDocument 1_Сит.план (10000).dmt
@Goto %EndSelect
%1000
@ExecuteDocument 1_Сит.план (1000).dmt
@Goto %EndSelect
%2000
@ExecuteDocument 1_Сит.план (2000).dmt
@Goto %EndSelect
%5000
@ExecuteDocument 1_Сит.план (5000).dmt
%EndSelect

Усім привіт!
Побачив от такий скрипт!
Хочу дізнатися чи можливо щоб крім масштабу можна було обирати папку!

Тобто: Скрипт повинен виконувати таке:
Наприклад є файли dmt в різних масштабах - Абрис1000.dmt, Абрис2000.dmt Вони знаходяться в папці c:digitals/tamplates/Abrysy
Скрипт дає вибрати між тим що ви хочете зробити і в якому масштабі і виконує це

Автор:  Dmitry_Zolotar [ 20 апр 2021 11:04 ]
Заголовок сообщения:  Re: Все про скрипти

$AM=@ActivateMap
@if $AM=0 then @Break
$SO=@Map.SelectedObject
@if $SO=0 then @Break Потрібно помітити об'єкт
$PPath=@ProgramPath
$DocType=@Dialog.Select Оберіть тип документу|Абрис|План
@if $DocType= then @Break Не обрано тип документу
@if $DocType=Абрис then $TemplatePath=$PPath\Templates\Abrysy\
@if $DocType=План then $TemplatePath=$PPath\Templates\Plany\
$Scale=@Dialog.Select ВИБЕРІТЬ МАСШТАБ|500|1000|2000
@if $Scale= then @Break Не обрано масштаб
$TemplateFileName=$TemplatePath$DocType$Scale.dmt
@ExecuteDocumentFromFile $TemplateFileName

Автор:  Denidz [ 20 май 2021 20:41 ]
Заголовок сообщения:  Re: Все про скрипти

Доброго времени суток. А может кто-нибудь поделиться скриптом по заполнению точечными объектами (одиночными символами) полигона, чтоб с рандомным расстоянием между точеными объектами (но чтоб не было меньше определенного значения, которое например указывается в переменной) и рандомным углом поворота. Вдруг кто такое реализовывал:)
Есть вставка-точки в полигон, но там только в шахматном порядке или равномерно.

Автор:  Руслан Пархуць [ 21 май 2021 18:50 ]
Заголовок сообщения:  Re: Все про скрипти

Denidz писал(а):
Доброго времени суток. А может кто-нибудь поделиться скриптом по заполнению точечными объектами (одиночными символами) полигона, чтоб с рандомным расстоянием между точеными объектами (но чтоб не было меньше определенного значения, которое например указывается в переменной) и рандомным углом поворота. Вдруг кто такое реализовывал:)
Есть вставка-точки в полигон, но там только в шахматном порядке или равномерно.

В даному вiкнi є можливiсть i випадкового промальовування знаку, чи має бути щось iнше?

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

Автор:  Denidz [ 21 май 2021 22:03 ]
Заголовок сообщения:  Re: Все про скрипти

Спасибо! стояла версия за июль 20 года, там еще этого не было. Обновился, теперь все ок.

Автор:  Denys Sanitskyi [ 28 май 2021 07:32 ]
Заголовок сообщения:  Re: Все про скрипти

Всім доброго дня!
Зацікавило таке питання, чи можливо за допомогою скрипта присвоїти кожному лінійному об'єкту в масиві (групі) обє'ктів, відібраних за певним параметром, присвоїти значення параметра довгота/широта об'єкта дотичного до об'єкта іншого умовного слоя та довгота/широта найпівденнішого об'єкта (має вийти щось схоже на даний код: 485612302655083148561676265517541)
(це те чим зараз користуюся, але даний скрипт опрацьовує тільки цільні об'єкти)

%Events.OnChange,%Events.OnAdd,%Events.OnCollect,%Events.OnLayerChange
$EO=@EventObject
$PC=@Map.Object[$EO].Count
$BLCode1=@Map.Object[$EO].BLCode 1
$BLCode2=@Map.Object[$EO].BLCode $PC
$WC=@Map.Object[$EO].Parameter[ID7079]
@if $WC= then $WC=1
@Map.Object[$EO].Parameter[1] $BLCode1$BLCode2$WC
@Dialog.Message $BLCode1$BLCode2$WC
@Map.Selected.Refresh

Автор:  fendak [ 06 июн 2021 11:50 ]
Заголовок сообщения:  Re: Все про скрипти

Добрий день!
Дивлюся, що розробники Digitals додали цілий ряд нових функцій для обробки тексту.
Чи можна якийсь приклад використання нових функцій?
Цікавить, зокрема:
@Text[N].Crop Start Count, @Text[N].Histogram [Start Count] - Що означає замінює кожну строку її фрагментом? Чи не є це можливістю об'єднувати в таблиці кілька яцейок в одну, якої так не вистачає в таблицях Digitals?
@Text[N].Delimiter, @Text[N].DelimitedText - Про який символ-розділювай йде мова?
@Text[N].Leading Char - Для чого додавати нулі в список?
@Text[N].LengthFilter Condition, @Text[N].Unique [Length] - Взагалі щось екзотичне.

Вложения:
2021-06-06_124142.jpg
2021-06-06_124142.jpg [ 90.45 Кб | Просмотров: 5580 ]

Автор:  Dmitry_Zolotar [ 09 июн 2021 15:01 ]
Заголовок сообщения:  Re: Все про скрипти

Маємо наприклад файл https://data.land.gov.ua/downloads/1/1/46.zip

;Відкриваємо 46.json
@Text[1].Load D:\dataland\46\46.json
; вирізаємо з кожної строки кадастровий номер (з 13-ї позиції 22 символа)
@Text[1].Crop 13 22
;відфільтровуємо пусті строки
@Text[1].LengthFilter <1
;зберігаємо в файл перелік кадномерів
@Text[1].Save D:\dataland\46\46.txt
;обрізаємо строки кожної строки до 17 символів, неунікальні значення видаляємо
@Text[1].Unique 17
;зберігаємо список непустих кадастрових кварталів
@Text[1].Save D:\dataland\46\quarters46.txt
;обрізаємо строки кожної строки до 13 символів, неунікальні значення видаляємо
@Text[1].Unique 13
;зберігаємо список непустих кадастрових зон
@Text[1].Save D:\dataland\46\zones46.txt

Автор:  Dmitry_Zolotar [ 09 июн 2021 15:57 ]
Заголовок сообщения:  Re: Все про скрипти

fendak писал(а):
@Text[N].Delimiter, @Text[N].DelimitedText - Про який символ-розділювай йде мова?
viewtopic.php?p=41608#41608
fendak писал(а):
@Text[N].Leading Char - Для чого додавати нулі в список?
ІПН,які починаються з нуля часто його втрачають, те саме стосується кадастрових номерів ділянок Крима, Вінницької та Волинської областей. Або якщо потрібно числовий ряд перетворити у код певної ширини
fendak писал(а):
@Text[N].LengthFilter Condition, @Text[N].Unique [Length] - Взагалі щось екзотичне.
Див. попередній пост

Автор:  matskows [ 22 июн 2021 12:45 ]
Заголовок сообщения:  Re: Все про скрипти

@Map.SelectLayer ID20000
@SendChars <CR>
[ Операции с объектами.Добавить узлы ]
@SendChars <CR>
@Map.DeselectAll
@Map.SelectLayer ID20000
Таблица | Настраиваемая...


Чи може хтось допомогти з таким:
Потрібно ось це розписати більш детально

Тобто: Операція добавить узли щоб вибирало слой який буде вписано в скрипті
Потім кожну точку(вузол) який створено нумеровало у форматі 0001,0002,0003...
І вставляло на план настроювану таблицю у форматі NPXYZ чи з іншими параметрами

P.S. Можливо у когось є література з більш детальним описом роботи зі скриптами

Страница 78 из 83 Часовой пояс: UTC + 2 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/