Аналитика 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 Гениально... Спасибо.... |
Автор: | 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нше?
|
Автор: | 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] - Взагалі щось екзотичне.
|
Автор: | 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#41608fendak писал(а): @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/ |