@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)
Что-то не пойму или не так делаю. В Диджитале есть область видимости переменной?
Узнаю пользователя Виндовс. Дальше скрипт с циклом (надеюсь правильный)
$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
Скриптом найти текст на карте (текстовый блок) и заменить в нем определенный текст. Через get и т.д. не получается т.к. вставляется Штамп со списком и код как в ДМТ не работает.
Сделал через слой с подписями. Т.е. В новосозданный слой ткнул в него подписи.
Можно ли как-то проверить наличие файла перед его открытием (допустим у меня есть растры которые состоят как из одной карты, так и из нескольких частей карты. Т.е. если файла не существует то выдаем ошибку, если есть то проверяем наличие второй части. и т.д. ?
;%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…Через спецвставку в тек.позицию вставить участок, удалить точку.
И так все в цикле должно быть. Но никак не дойдет мне как работать с этим обработчиком.
Смысл в том что юзер ставит точку, в ее место вставляется объект, и так пока не пройду все количество участков.
правка|копировать @FileOpen Путь_и_имя_Вашего_Файла (т.е. это ХМЛНормал)
правка|вставить
Не даю 100%-ной гарантии что откроет файл. У меня мой шаблон открыл только тогда, когда я в своей папке диджиталс/юзерс/своя_учетка, переименовал папку Templates на Template, и закинул туда свой ШаблонНормал
Как в цикле пройтись по всем помеченным участкам (на подобии формирования кад.плана, когда помечаешь все участки (слой Дилянка) и через документы-кад.план формируешь кад.план по каждому участку) ? Т.е. как выбрать первый из помеченных, второй из помеченных и т.д.?
$NomSel=0
%Start
$NomSel=@Map.NextSelected $NomSel
@If $NomSel=0 then @Break Пройдено всі позначені об'єкти
@Dialog.Message $NomSel
;Дії з об'єктом $NomSel
@Goto %Start
Я пробовал недавно так сделать (только со своим шаблоном). Он его не подгружал (если только в своей учетке диджитала переименовать темплейтес в темплейт, тогда грузил). В чем причина я так и не понял. Да и в корне папки диджиталса тоже есть папка темплейтес, и с нее тоже шаблон не грузит.
$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
Получил нужный результат. Теперь скрипт проходится по каждому участку и делает его выборку отдельно от всех (т.к. при выделенных всех участках диджиталс всеравно делал кадпланы на все сразу, и тогда вообще получалась каша)