Аналитика

Цифровая фотограмметрия, картография и землеустройство
Текущее время: 19 ноя 2017 14:17

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




Начать новую тему Ответить на тему  [ Сообщений: 161 ]  На страницу 1, 2, 3, 4, 5 ... 11  След.
Автор Сообщение
 Заголовок сообщения: Библиотека полезных скриптов
СообщениеДобавлено: 24 апр 2012 14:42 
Администратор
Администратор

Зарегистрирован:
28 авг 2004 17:19
Сообщения: 971
Назрела тема для обмена различными полезными скриптами. Милости просим всех, кому есть чем поделиться.

Пояснение для тех, кто не знаком со скриптами Digitals

Скрипт позволяет автоматизировать различные типовые операции, обычно выполняемые над группой карт и/или объектов. Даже если вы не умеете писать скрипты сами, то можете использовать подходящие готовые.

Для использования готового скрипта нужно создать пользовательскую панель инструментов (меню Окно|Создать панель инструментов), щелкнуть на ней правой кнопки мыши и выбрать пункт контекстного меню Добавить кнопку. Затем скопировать текст скрипта в правую часть открывшегося окна редактирования и нажать ОК.

Затем, по желанию, можно назначить кнопке иконку, имя и т.д. с использованием все того же контекстного меню, вызываемого щелчком правой кнопкой мыши на кнопке со скриптом.

Текст скрипта в сообщении выделяется курсивом - копировать нужно только его.

Дополнительно

Инструментальные панели и язык скриптов Digitals

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Автоматическая загрузка последних открытых карт
СообщениеДобавлено: 24 апр 2012 14:53 
Администратор
Администратор

Зарегистрирован:
28 авг 2004 17:19
Сообщения: 971
Автоматическая загрузка последних открытых карт

Сохранение списка всех открытых карт по выходу из программы в файл openfiles.txt и их автоматическое открытие при повтором запуске Digitals.

%Events.OnShutdown
$C=@MapCount
@If $C<=0 @Break
$I=1
%Start:
$S=@Map[$I].Filename
@Text.Add $S
$I=$I+1
@If $I<=$C @Goto %Start
@Text.Save openfiles.txt
%Events.OnStartup
@Text[N].Load openfiles.txt
$C=@Text.Count
@If $C<=0 @Break
$I=1
%Start:
$S=@Text.Line[$I]
@FileOpen $S
$I=$I+1
@If $I<=$C @Goto %Start


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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Восстановление всех удаленных объектов карты
СообщениеДобавлено: 24 апр 2012 14:59 
Администратор
Администратор

Зарегистрирован:
28 авг 2004 17:19
Сообщения: 971
Восстановление всех удаленных объектов карты (undelete)

Восстанавливает все объекты карты, которые удалялись в текущей сессии (после открытия файла) и помечает их.

$V=@Version
@If $V<41023 @Break Для работы скрипта нужно обновить программу
$C=@Map.Count
@IF $C=0 @Break
@Map.DeselectAll
$I=1
%Start:
$D=@Map.Object[$I].Deleted
@If $D=0 @Goto %Next
@Map.Object[$I].Deleted 0
@Map.Object[$I].Select
%Next:
$I=$I+1
@If $I<=$C @Goto %Start
@Window.Refresh

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 24 апр 2012 15:24 
Администратор
Администратор

Зарегистрирован:
28 авг 2004 17:19
Сообщения: 971
Быстрое конвертирование открытой карты в другой формат

Сохраняет открытую карту в другой формат (по выбору: xml, dxf, dwg, in4, shp, mid/mif), закрывает текущее окно и открывает вновь созданный файл.

$M=@Map.Modified
@If $M=1 @Break Сохраните текущие изменения
$S=@Map.ClearFilename
$E=@Dialog.Select Сохранить как|xml|dxf|dwg|in4|shp|mif
@If $E= then @Break
$S=$S.$E
@Map.SaveToFile $S
$FE=@FileExists $S
@If $FE=0 @Break
@CloseMap
@FileOpen $S


Примечание: Если вам не нужно закрытие текущей карты и открытие новой, то удалите четыре последние строчки скрипта после команды @Map.SaveToFile $S. Вы также можете изменить список форматов в четвертой строке, оставив только необходимые вам или, наоборот, добавив новые.

Конвертирование всех открытых карт в формат DXF

$C=@MapCount
$I=0
%Start
$I=$I+1
@If $I>$C then @Break
$F=@Map[$I].ClearFilename
@Map[$I].SaveToFile $F.dxf
@Goto %Start


Примечание: Для конвертирования в любой другой формат, замените dxf на нужное расширение в предпоследней строке скрипта.

Конвертирование всех карт в папке в другой формат

Когда карт слишком много и открыть их все одновременно не получается, можно использовать скрипт, который по очереди откроет все файлы из заданной папки и сохранит в другой формат.

$Filter=*.dmf
$F=@Dialog.SelectFolder Укажите папку с картами
@Text.FolderList $Filter $F
$C=@Text.Count
@If $C=0 @Break В папке "$F" отсутствуют файлы $Filter
$I=0
%Start
$I=$I+1
@If $I>$C then @Break
$F=@Text.Line[$I]
@FileOpen $F
$F=@Map.ClearFilename
@Map.SaveToFile $F.dxf
@CloseMap
@Goto %Start


Примечание: Скрипт ищет и конвертирует все DMF файлы в указанной папке. Если исходные файлы в другом формате, замените фильтр в первой строке скрипта (например $Filter=*.in4 или $Filter=*.*). Для конвертирования не в DXF, а в другой формат, замените dxf на другое расширение в третьей с конца строке скрипта. Если необходимо обработать файлы не только в указанной папке, но и во всех ее подпапках, то вместо функции @Text.FolderList можно использовать @Text.FolderListTree.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 24 апр 2012 15:41 
Администратор
Администратор

Зарегистрирован:
28 авг 2004 17:19
Сообщения: 971
Поиск участка с заданным кадастровым номером

Ищет на индексно-кадастровой карте участок с заданным номером. Поиск выполняется по значениям двух параметров (сначала SC - для In4-участков, а затем ID7000513 для участков с параметрами в формате XML).

@Map.DeselectAll
$CN=@Dialog.Ask Кадастровый номер
@Map.FindByParameters 1|SC=$CN
$S=@Map.SelCount
@If $S>0 @Goto %Show
@Map.FindByParameters 1|ID7000513=$CN
$S=@Map.SelCount
@If $S=0 @Break Участок не найден
%Show:
@Window.ShowSelected


Этот скрипт легко модифицировать для быстрого поиска по другим параметрам, например по адресу и т.д.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 26 апр 2012 14:34 
Гуру
Гуру

Зарегистрирован:
26 фев 2007 12:04
Сообщения: 1751
Откуда: Vinnitsa
Формирование KMZ файлов с уровнями детализации на основе DMF карт с 3D моделями

Скрипт выполняет полный цикл обработки исходных 3D моделей зданий и сохраняет результат в KMZ формате. Подробнее про используемые команды скрипта смотрите здесь. Пример исходного DMF файла (фрагмента полной карты) во вложении.

;каталог исходных тайлов
$SrcDir=\\Bond\Src\
;каталог выходных тайлов
$DstDir=\\Bond\Out\
;каталог поиска текстур
$TexDir=\\Server\Images
;каталог сгенеренных KMZ файлов моделей
$KMZDir=\\Bond\Out\KMZ\
;номер первого тайла для обработки
$FileMin=138
;номер последнего тайла для обработки
$FileMax=138
;
;поехали
$I=$FileMin
%Start
;имя текущего файла
$S=$SrcDir$I.dmf
$B=@FileExists $S
;файл не найден, пропускаем
@if $B<>1 @Goto %Skip
;открываем файл
@FileOpen $S
;если нет 3D объектов, пропускаем
$B=@Map.Has3DModels
@if $B<>1 @Goto %Skip
;помечаем слои рельефа
@Map.SelectLayer ID1001
@Map.SelectLayer ID1002
@Map.SelectLayer ID1003
;строим стены
ЦМР | Переприсвоить высоты
;удаляем помеченные
Правка | Удалить
;накрываем крыши (на случай дождя)
@Map.CoverMultiFlatRoofs
;создаем выходной каталог
$Dir=@Concat $DstDir,$I,\
@CreateFolder $Dir
;сохраняем карту в выходном каталоге
$S=@Concat $Dir,$I,.dmf
@Map.SaveToFile $S
;объединяем 3D объекты
@Map.Merge3DObjects
;сохраняем результат объединения
$S=@Concat $Dir,$I,merged.dmf
@Map.SaveToFile $S
;перед генерацией текстур сохраняем под новым именем
$S=@Concat $Dir,$I,tex.dmf
@Map.SaveToFile $S
;генерим текстуры
@Window.GenerateTextures $TexDir pak jpg
;уменьшаем разрешение текстур
@Map.MergeTextures 4096 0.15
;сохраняем результат
@Map.SaveToFile $S
;помечаем рамку тайла, ограничивающего все 3D объекты
@Map.DeselectAll
@Map.SelectLayer ID1006
;экпортируем в KMZ с уровнями детализации
$S=@Concat $KMZDir,$I,.kmz
@Map.SaveToKMZ $S LOD 3DObjs
%Skip
@CloseMap
$I=$I+1
;переход к следующему файлу
@if $I<=$FileMax @Goto %Start
;создаем KMZ со ссылками на все вложенные
@CreateCommonKMZ $KMZDir ShowInfo


Вложения:
138.dmf [137.02 Кб]
Скачиваний: 725

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 31 май 2012 11:51 
Администратор
Администратор

Зарегистрирован:
28 авг 2004 17:19
Сообщения: 971
Разворот подписей объектов

Выполняет разворот всех подписей помеченных объектов на заданный угол

$S=@Map.SelCount
@If $S<=0 @Break Нужно пометить объекты
$Angle=@Dialog.Ask Угол разворота подписей Default=0
$Angle=-$Angle*10
$N=0
$C=@Map.Parameters.Count
%Start:
$N=@Map.NextSelected $N
@If $N<=0 @Goto %Finish
$I=1
%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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 25 июл 2012 15:15 
Гуру
Гуру

Зарегистрирован:
06 июн 2010 06:35
Сообщения: 601
Откуда: Ліспроект
sotnikoff_dimka писал(а):
получается нужно изменить строку $CN=@Dialog.Ask Кадастровый номер.... что нужно там написать?
Адреса у нас присвоены участкам в таком виде: "804,86100,Донецька область,м.Макіївка,-,вул.Іванов,1,-,1"
в поиске весь адрес нужно будет вводить, либо можно ввести только название улицы?

В темі запитів на функції


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 31 авг 2012 10:38 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 1863
Откуда: Vinnitsa
Во вложенном архиве содержится два скрипта и панель с кнопкой, распакуйте архив в папку Digitals.
1. FindLeftTopPoint
Единственный аргумент - номер объекта в карте, результат - номер левой верхней точки объекта. Наличие открытой карты и объекта с заданным номером не проверяется.

2. StartFromTopLeft
Скрипт делает начальной левую верхнюю точку всех помеченных замкнутых объектов (игнорируються сложные полигоны) в активной карте. Используется скрипт из п.1, при переносе этого скрипта в какую-либо подпапку папки Library необходимо изменить строку $SP=%Library.FindTopLeftPoint $SO на $SP=%Library.Имя_подпапки\FindTopLeftPoint $SO.

P.S. В скрипте используется новая функция скриптов @Map.Object[N].StartFromPoint PointIndex, доступная в версиях Ged.exe, вышедших после 30.08.2012.


Вложения:
Unpack2DigitalsFolder.zip [1.23 Кб]
Скачиваний: 669

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 05 дек 2012 18:22 
Администратор
Администратор

Зарегистрирован:
28 авг 2004 17:19
Сообщения: 971
ЕЦКО писал(а):
Доброе время суток!
Можно ли сделать скрипт на подобие *Быстрое конвертирование открытой карты в другой формат* выполняющий функцию *Файл :arrow: - Сохранить как*
Хочеться *Файл :arrow: - Сохранить в ХМЛ :arrow: Закрыть файл* - что б кадастровый номер выводился автоматически в название и закрывался без запроса.:idea:

Файл | Сохранить в XML...
@CloseMap

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 15 янв 2013 11:38 
Администратор
Администратор

Зарегистрирован:
28 авг 2004 17:19
Сообщения: 971
Пометка объектов карты, имеющих подписи высот

$C=@Map.Count
@If $C<=0 @Break
$I=1
@Map.BeginUpdate
%Start:
$S=@Map.Object[$I].Caption[-2]
@If $S= @Goto %Next
@Map.SelectObject $I
%Next:
$I=$I+1
@If $I<=$C @Goto %Start
@Map.EndUpdate

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 07 фев 2013 18:09 
Администратор
Администратор

Зарегистрирован:
28 авг 2004 17:19
Сообщения: 971
Сброс коэффициента масштабирования объектов

$C=@Map.Count
@If $C<1 @Break
$N=1
%Start:
@Map.Object[$N].Scale 0
$N=$N+1
@If $N<=$C @Goto %Start


При использовании команды Правка|Специальная вставка|В другом масштабе объекты карты масштабируются (растягиваются или сжимаются) и им присваивается специальный коэффициент масштабирования. Этот коэффициент используется для приведения площади и периметра измененного объекта к исходным значениям до изменения.

Никогда не используйте вставку в другом масштабе в ваших рабочих картах. Эта команда предназначена только для печати документов, схем и т.д.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 25 фев 2013 09:58 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 1863
Откуда: Vinnitsa
Замена строк в значениях параметров во всех dmf-файлах в указанной папке

$SearchText=@Dialog.Ask Введите текст для поиска
$STL=@Calc Length("$SearchText")
@if $STL=0 then @Break Введите непустой текст
$ReplaceText=@Dialog.Ask Введите текст для замены
$Path=@Dialog.Ask Путь к папке Default=С:\Digitals
@Text[0].FolderListTree *.dmf $Path
$MapCount=@Text[0].Count
@if $MapCount=0 then @Break Файл(ы) не найдены
$FileNumber=0
%LoopEachFile
$FileNumber=$FileNumber+1
$MapFileName=@Text[0].Line[$FileNumber]
@FileOpen $MapFileName
$OC=@Map.Count
$PC=@Map.Parameters.Count
$CC1=0
$I=0
%LoopObject
$I=$I+1
$J=0
$L=@Map.Object[$I].Layer
$LD=@Map.Layers.Get $L
@Dialog.Message $LD
%LoopParameter
$J=$J+1
$S=@Map.Object[$I].Parameter[$J]
$CC2=0
%Repeat
$IP=@Calc pos("$SearchText","$S")
@if $IP=0 then @Goto %Continue1
$S=@Calc delete("$S",$IP,$STL)
$S=@DequoteText $S
$S=@Calc insert("$S","$ReplaceText",$IP)
$S=@DequoteText $S
$CC2=$CC2+1
@if $CC2>100 then @Goto %Continue1
@Goto %Repeat
%Continue1
@if $CC2=0 then @Goto %Continue2
$CC1=$CC1+1
@Map.Object[$I].Parameter[$J] $S
%Continue2
@if $J<$PC then @Goto %LoopParameter
@if $I<$OC then @Goto %LoopObject
@if $CC1>0 then @Map.SaveToFile $MapFileName
@if $CC1>0 then @Text[1].Add $MapFileName изменен
@if $CC1=0 then @Text[1].Add $MapFileName не изменен
@CloseMap
@if $FileNumber<$MapCount then @Goto %LoopEachFile
@Text[1].Save $Path\Changes.log
@Dialog.Message см. лог-файл $Path\Changes.log

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


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 25 фев 2013 11:14 
Гуру
Гуру

Зарегистрирован:
26 фев 2007 12:04
Сообщения: 1751
Откуда: Vinnitsa
Пересчет всех In4-файлов в указанной папке в новую систему координат (основан на датумах)

;выбираем папку с исходными файлами
$Ext=.in4
$InF=@Dialog.SelectFolder Укажите папку с картами
;формируем список файлов в папке
@Text.FolderList *$Ext $InF
;проверяем или список пустой
$C=@Text.Count
@If $C=0 @Break В папке "$InF" отсутствуют файлы $Ext
;для сконвертированных файлов создаем подкаталог
$OutF=$InF\TransformedToSK63
@CreateFolder $OutF
;очищаем подкаталог, если он уже был создан ранее
@CleanFolder $OutF
;открываем файлы из списка по одному
$I=0
%Start
$I=$I+1
@If $I>$C then @Break
$InF=@Text.Line[$I]
@FileOpen $InF
;пересчитываем в новую СК
@Map.RecalculateToNewDatum Имя_местной_СК SK63
;меняем значение дескриптора, указывающего на СК
@Map.SelectLayer ID10000
@Map.Selected.ChangeParameter ID10050 2,X
;сохраняем в подкаталоге
$InF=@Map.ClearShortFilename
@Map.SaveToFile $OutF\$InF$Ext
@CloseMap
@Goto %Start


Если строку @Map.RecalculateToNewDatum Имя_местной_СК SK63 заменить на строки

@if $I > 1 then @SendChars <CR>
Карта | Система координат...


тогда можно выполнять пересчет, основанный на связующих точках. При этом окно Карта>Система координат откроется перед началом трансформации (здесь нужно ввести координаты связующих точек). И все найденные файлы будут пересчитаны в новую систему координат на основе введенных точек.

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


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 25 фев 2013 13:09 
Администратор
Администратор

Зарегистрирован:
28 авг 2004 17:19
Сообщения: 971
Установка слоя помеченного объекта слоем для сбора

При создании топографических карт с большим количеством слоев выбор слоя из списка отнимает время. Данный скрипт устанавливает слой для сбора по помеченному объекту. Кнопке со скриптом нужно назначить горячую клавишу, например \ (которая на многих клавиатурах находится выше клавиши Enter).

Теперь, не покидая режима сбора будтет достаточно нажать Enter для выбора объекта нужного слоя, а затем \ для установки его в качестве текущего.

$N=@Map.NextSelected
@If $N<=0 then @Break
$L=@Map.Object[$N].Layer
@Map.SetCollectionLayer $L

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 161 ]  На страницу 1, 2, 3, 4, 5 ... 11  След.

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


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

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


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

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