Все про скрипти

Добавлена функция

@Map.Object[$N].Transform - функция трансформирует координаты объекта согласно заданным точкам. Точки задают векторы перемещения в виде Исходная точка → Конечная точка. Точки отделяются вертикальной чертой, координаты точек отделяются пробелами.

$P1=@Map.Object[1].Point[2] $P2=@Map.Object[2].Point[1] $P3=@Map.Object[1].Point[3] $P4=@Map.Object[2].Point[4] @Map.Object[1].Transform $P1|$P2|$P3|$P4 @Window.RefreshПример работает с приложенным DMF и пристыковывает первый объект к стороне второго объекта.
TransformExample.dmf (17.7 KB)

Спасибо! :smiley:
То, что нужно! Даже лучше

Что-то не пойму или не так делаю. В Диджитале есть область видимости переменной?

Узнаю пользователя Виндовс. Дальше скрипт с циклом (надеюсь правильный)

$idx=@Text[1].Count //Открыли файл со списком и узнали количество строк
%Start:
$text=@Text[1].Line[$idx] //Берем последнюю строку (идем в обратном порядке снизу вверх)
$userLogin=@StringPart 1 $text //Взяли юзера из строки
$userFam=@StringPart 2 $text //Взяли фамилию
$userInic=@StringPart 3 $text // Взяли инициалы
$idx=$idx-1 // уменьшили счетчик
$userName=@concat $userFam, ,$userInic //Соединяем и получаем полное ФИО
@if $userLogin=$user then @Break //выход из цикла если нашли юзера (и по принципу программирования в переменных должны быть данные
@if $idx=0 then @Break Пользователь не найден
@Goto %Start //возврат на начало чтобы обойти весь список
@Dialog.Message $userName // Почему-то не срабатывает - не выводит окно (если вставить в цикл, все работает)

Что не так?

UPD: текстовый файл с полями user familiya iniciali

Все решилось, забыл про %Next :wink:

Скриптом найти текст на карте (текстовый блок) и заменить в нем определенный текст. Через get и т.д. не получается т.к. вставляется Штамп со списком и код как в ДМТ не работает.

Так у вас получилось или нет?

Сделал через слой с подписями. Т.е. В новосозданный слой ткнул в него подписи.

Можно ли как-то проверить наличие файла перед его открытием (допустим у меня есть растры которые состоят как из одной карты, так и из нескольких частей карты. Т.е. если файла не существует то выдаем ошибку, если есть то проверяем наличие второй части. и т.д. ?

@FileExists Filename-Возвращает 1 если данный файл существует и 0 если нет

Спасибо

Поскажите как сделать так:
правка|копировать-Создать ХМЛ нормал-правка|вставить
интересует именно Создать ХМЛ нормал
спасибо

;%Events.OnPointCollect
%Events.OnCollect
;%Start:
@Map.SelectLayerByName Точки зйомочної мережі
Вид | Показать помеченные
@ActivateMap $mapCount - 1
@Map.Copy
@CloseMap $mapCount
@ActivateMap 2
Специальная вставка | В текущую позицию
Вид | Показать все
$mapCount=$mapCount-1
@if $mapCount=2 Then @Break
;%Next

Пытаюсь сделать обработчик события но что-то ничего не получается. Суть такова:
1…на первой карте 4е участка.
2…Помечаются
3…Создается новый документ
4…С этих участков создаются планчики (пустые, но там уже есть смежники и прочая нужная информация)
5…Узнаю количество открытых карт
6…Запускаю обработчик собития
7…Создаю в сборе точку на новой пустой карте (п.3)
8…По идее должен перейти на последнюю карту, скопировать данные, закрыть
9…Перейти на вторую и найти точку.
10…Через спецвставку в тек.позицию вставить участок, удалить точку.

И так все в цикле должно быть. Но никак не дойдет мне как работать с этим обработчиком.
Смысл в том что юзер ставит точку, в ее место вставляется объект, и так пока не пройду все количество участков.

UPD: Я сделал, отвечать не нужно. Спасибо.

правка|копировать
@FileOpen Путь_и_имя_Вашего_Файла (т.е. это ХМЛНормал)
правка|вставить

Не даю 100%-ной гарантии что откроет файл. У меня мой шаблон открыл только тогда, когда я в своей папке диджиталс/юзерс/своя_учетка, переименовал папку Templates на Template, и закинул туда свой ШаблонНормал

Как скриптом дэактивировать %Events после обработки данных?

Питання вже ставилось. Дивіться тут

Как в цикле пройтись по всем помеченным участкам (на подобии формирования кад.плана, когда помечаешь все участки (слой Дилянка) и через документы-кад.план формируешь кад.план по каждому участку) ? Т.е. как выбрать первый из помеченных, второй из помеченных и т.д.?

$NomSel=0 %Start $NomSel=@Map.NextSelected $NomSel @If $NomSel=0 then @Break Пройдено всі позначені об'єкти @Dialog.Message $NomSel ;Дії з об'єктом $NomSel @Goto %Start

@FileNew MyMap /Template=XMLNormal.dmf

Создает новую карту на основе шаблона XMLNormal.

Я пробовал недавно так сделать (только со своим шаблоном). Он его не подгружал (если только в своей учетке диджитала переименовать темплейтес в темплейт, тогда грузил). В чем причина я так и не понял. Да и в корне папки диджиталса тоже есть папка темплейтес, и с нее тоже шаблон не грузит.

Благодарствую. Немножко доработав:

$NomSel=0
%Start
@ActivateMap 1
@Map.SelectLayerByName Ділянка
$NomSel=@Map.NextSelected $NomSel
@If $NomSel=0 then @Break Пройдено всі позначені об’єкти
@Map.DeselectAll
@Map.Object[$NomSel].Select
Документы | КадпланА3_за_межею_НП
@Goto %Start

Получил нужный результат. Теперь скрипт проходится по каждому участку и делает его выборку отдельно от всех (т.к. при выделенных всех участках диджиталс всеравно делал кадпланы на все сразу, и тогда вообще получалась каша)

При экспорте в BMP, хочу передать $path, по которому должен сохранятся растр. Невыходит :frowning:

$pathusr=@Concat c:\digitals\users,$users
@Dialog.Message $pathusr
@Sendchars $pathusr
Экспорт в | BMP

UPD: Я нашел. Отвечать не нужно. Спасибо.